[中] 设置变化触发的后台重建线程无法取消,可能并行多个

Aperta
#25 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
Mezza giornata
Idoneità per principianti
65/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python

Direzione di ricerca

Start at windows/birdlock/app/state.py:760-792, reading _rebuild_now() and the _job_gen counter, then find the existing LatestOnly helper the report says already lives in the project and see how it is used elsewhere. Trace how RenderJob is constructed inside the spawned work() so you know where a stale generation can return early. Done means dragging the slider on a long sequence keeps at most one rebuild thread alive and abandoned generations exit before doing the render work; the report was derived from an audit, not reproduced on Windows, so verify thread count by hand.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

位置:windows/birdlock/app/state.py:760-792

现象:_rebuild_now() 每次 _job_gen += 1 后新开 threading.Thread,旧线程仍会完整构造 RenderJob,只是 done() 因 gen 不匹配丢弃结果。拖动滑块时若单次构建超过 60 ms,会累积多个线程与大量 CPU/IO。

复现:在长序列上快速拖动滑块,观察线程数与 CPU。

建议:改成单线程「只保留最新任务」的 worker(项目里已有 LatestOnly 实现),或在 work() 开头检查 gen 已过期即返回。

来源:2026-11-15 全仓只读审计,PR #7 未包含此项。 未在 Windows 实机复现,复现路径由代码审计推得。

Lingua principale
Swift
Stelle
2
Fork
2
Merge medio
1h 11m
PR unite (30g)
2

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cyandee/BirdLock

Tutte le issue di cyandee/BirdLock

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.