Commit Graph

2 Commits

Author SHA1 Message Date
gaozheng ced2ca7811 feat(render): AsyncRegionBuilder 就绪缓存LRU+预取+相同目标短路
C3-3:为 AsyncRegionBuilder 加按 RegionTarget 键的有界 LRU 就绪缓存
(容量N默认6)、prefetch 后台低优先预取(不抢占主目标)、getReady 非阻塞
缓存命中,并短路 requestTarget 相同目标(修 C3-2 LOW)。worker 每轮主
目标优先,否则建预取队列最新;缓存/refcount 增减全在锁内,析构干净 join。
ViewAdaptiveVolumeSource:updateView 提交主目标后预测下一目标(细一层
同区+沿相机方向平移一格 brick 列)并 prefetch;currentImages 走
getReady(主目标)命中即用否则沿用上一张。线程安全延续 C3-1。
2026-06-24 10:37:12 +08:00
gaozheng fa34cb0bc3 feat(render): C3-1 AsyncRegionBuilder 后台异步重组 + 双缓冲交接
抽公共重组核 reorganizeRegion(RegionReorganizer.{hpp,cpp})为单一真源:
C2 ViewAdaptiveVolumeSource 改委托、C3 AsyncRegionBuilder 也调它(真 DRY)。

AsyncRegionBuilder:后台 worker 调重组核构建 vtkImageData,主线程非阻塞
takeLatest 取最新就绪;requestTarget supersede 收敛最新不堆积。线程安全:
vtkImageData refcount 增减全在 mutex 内/单线程独占,析构置 stop 唤醒干净 join。

测试:5 个异步用例(同步一致/supersede 收敛/析构忙时干净 join/并发 400 次不崩
不死锁/takeLatest 非阻塞)全绿;C1+C2 的 17 个 ViewAdaptive* 抽核后回归全绿。
2026-06-24 09:56:55 +08:00