c++ - 线程安全的 TBB::concurrent_hash_map 删除

标签 c++ multithreading c++11 tbb

我正在寻找线程安全映射的解决方案,但包括待定所有内容库都不是线程安全的,无法删除、清除函数。由于性能问题,我不想使用互斥体。我正在互联网上搜索它很长一段时间,但我仍然找不到任何关于这个的例子,而且我的长篇文章英语不好。我搜索了很多东西,比如 const 对于 c++11 是线程安全的,但我想不通。

我试过这个来复制 map ,但它也不是线程安全的。

 __forceinline ActiveMap & GetActiveMap() { return m_activeCollection; }

当我尝试在另一个线程中复制 map 时,此代码崩溃。

最佳答案

(由于 __forceinline 关键字,我猜您正在使用 Visual C++)

  1. Visual studio 2013(我猜是 Visual studio 2015)带有一小组并发数据结构。标题 <concurrent_unordered_map.h>实现您可以使用的并发映射。

  2. 尝试使用锁分析您的应用程序。 Slim reader writer lock 通常还不错,可能就足够了。

关于c++ - 线程安全的 TBB::concurrent_hash_map 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923849/

相关文章:

c++ - 同时覆盖具有相同值的变量安全吗?

c++ - 重载时区分函数

c++ - 如何将此 std::function 传递给 std::async

c++ - 删除 vector 中的元素,该元素使用 'new' 运算符分配

C - 如何运行一个线程几秒钟,然后继续运行第二个线程

c# - 递归和 Rx 并行性

c++ - 使用标准编辑器打开文件并跳转到特定行

c++ - 有没有办法配置MSVS静态代码分析的细节?

c++ - std::vector::push_back 的成本是成功还是无效?

c++11 struct初始化编译错误