作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个无序的 map ,如下所示:
unordered_map<string, MyClass*> idToMyClassMap;
现在我明白了,我无法在没有同步的情况下从多个线程对该映射执行插入/删除等操作。但是我可以用我将使用的最大可能条目预填充这个映射,我将使用一个预先知道的字符串键列表和 MyClass 的所有 nullptr。当我真的想“插入”到这个 map 时,我将遍历 map ,找到哪个键是 nullptr 并使用它。当我删除时,我会再次将值设置为 nullptr。
这行得通吗?
最佳答案
是的,这在您不会使自己受制于竞争条件的意义上是可行的 - 假设您不从多个线程修改相同的元素。
find
是容器成员函数的一个罕见例子,它没有被标记为 const
(因为它返回可修改的迭代器)但仍然可以安全地从多个线程同时调用.
要获得更多关于容器线程安全的信息,我强烈建议记住这个页面:http://en.cppreference.com/w/cpp/container
关于c++ - 从多个线程更新对应于 unordred_map 中不同现有键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597688/
我有一个无序的 map ,如下所示: unordered_map idToMyClassMap; 现在我明白了,我无法在没有同步的情况下从多个线程对该映射执行插入/删除等操作。但是我可以用我将使用的最
我是一名优秀的程序员,十分优秀!