在std :: map或std :: unordered_map

我正在处理点云,并且使用std::map<int,std::vector<int>>对云进行下采样。地图中的键包含空间索引,矢量包含点的id。我从这张地图中提取了一些要处理的点,并且使用多线程处理(不是地图的零件)来完成处理。此时,地图已经超出范围。但是,当我的云太大而下采样率太低时,我会得到一个非常奇怪的行为。即使我使用了所有逻辑线程,我的CPU使用率也下降到60-70%。当我在没有地图的情况下(仅跳过点)进行向下采样时,我不会遇到此问题。我检查了所有线程是否正在运行,并且我的应用程序没有互斥锁,它们仅从vtkUnstructuredGrid云中读取,并且对于只读操作是线程安全的。我不知道为什么会发生这种情况。

是否可能由于map::max_size()而发生此问题,因为当我减小地图的尺寸​​时,我没有任何问题。还有为什么在我的多线程部分会引起问题?我的问题是插入要映射的元素多于max_size是否会引起某种未定义的行为?预先感谢。

nanalover 回答:在std :: map或std :: unordered_map

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3151210.html

大家都在问