线程安全的TBB :: concurrent_hash_map擦除

时间:2016-01-21 12:27:51

标签: c++ multithreading c++11 tbb

我正在寻找线程安全地图的解决方案,但是包括tbb所有内容库都不是线程安全的擦除,清除功能。我不想因为性能问题而使用互斥锁。我在互联网上搜索它很长一段时间,但我仍然无法找到任何关于这个的例子,而且我的篇幅也很糟糕。我搜索了很多像const这样的东西对c ++ 11是线程安全但我无法弄明白。

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

 __forceinline ActiveMap & GetActiveMap() { return m_activeCollection; }

当我尝试复制地图而其他线程在其中时,此代码崩溃。

1 个答案:

答案 0 :(得分:2)

(由于__forceinline关键字,我猜你正在使用visual c ++)

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

  2. 尝试使用锁定配置应用程序。超薄的读写器锁定通常不是那么糟糕,可能就足够了。