c++ - 向 std::map 或 std::unordered_map 插入太多项目时的奇怪行为
问题描述
我正在研究点云,并std::map<int, std::vector<int>>
用于对云进行下采样。地图中的键保存空间索引,向量保存点的 id。从这张地图中,我提取了一些要处理的点,并且该处理是使用多线程完成的(不是带有地图的部分)。此时地图已经超出范围。然而,当我的云太大并且下采样率太低时,我会得到一个非常奇怪的行为。即使我使用了所有逻辑线程,我的 cpu 使用率也下降到 60-70%。当我在没有地图的情况下进行下采样(通过简单地跳过点)时,我没有遇到这个问题。我检查了所有线程都在运行,并且我的应用程序没有互斥锁,它们只能从云中读取,这是一个vtkUnstructuredGrid
线程安全的只读操作。我不明白为什么会发生这样的事情。
是否会发生此问题,map::max_size()
因为当我减小地图的大小时,我没有任何问题。另外为什么它会在我的多线程部分引起问题?我的问题是插入元素来映射不仅仅是max_size
导致某种未定义的行为吗?提前致谢。
解决方案
推荐阅读
- amazon-web-services - 集群 amazon RDS 多可用副本以降低成本是否可行?
- ios - SwiftUI 中的上下文菜单预览没有圆角
- python - 将正则表达式列表与字符串列表匹配
- android - 安装 drozer 工具时出现问题,adb install 说问题如下图所示,g path 或 adb 有问题
- python - 如何一个接一个地打印字母并扩展它
- node.js - 什么会导致 ipc 回调返回一个值而不是运行时的值?
- python - 如何用文件名替换熊猫数据框中的单元格值?
- java - 有没有一种简单的方法可以通过它的值对地图的键进行排序?
- list - 使用 List.Genrate 的 PowerBI 表达式错误
- r - 从 for 循环输出创建多个箱线图