工作線程並發操作 `std::map
STL 容器非線程安全:多線程同時修改(`operator[]`、`push_back`、rehash、迭代器失效)導致內部結構破壞。
CCriticalSection csMap; // MFC 互斥量
// 線程函數
csMap.Lock();
auto& vec = map[key]; // operator[] 可能插入
vec.push_back(value);
csMap.Unlock();
// 每線程私有 map
thread_local std::map> localMap;
// 工作結束後主線程歸併
for (auto& [k, v] : localMap) globalMap[k].insert(end, v.begin(), v.end());
將 `CDotPlots::m_csCritical` 保護範圍擴大到**整個 map/vector 操作序列**,而非僅保護單行:
csMap.Lock();
VALUE& mapCol = pThreadInfo->pDotPlot->m_mapParticles[x];
IDS& vIDS = mapCol[y];
vIDS.push_back(i);
csMap.Unlock();