我正在寻找线程安全映射的解决方案,但包括待定所有内容库都不是线程安全的,无法删除、清除函数。由于性能问题,我不想使用互斥体。我正在互联网上搜索它很长一段时间,但我仍然找不到任何关于这个的例子,而且我的长篇文章英语不好。我搜索了很多东西,比如 const 对于 c++11 是线程安全的,但我想不通。
我试过这个来复制 map ,但它也不是线程安全的。
__forceinline ActiveMap & GetActiveMap() { return m_activeCollection; }
当我尝试在另一个线程中复制 map 时,此代码崩溃。
最佳答案
(由于 __forceinline
关键字,我猜您正在使用 Visual C++)
Visual studio 2013(我猜是 Visual studio 2015)带有一小组并发数据结构。标题
<concurrent_unordered_map.h>
实现您可以使用的并发映射。尝试使用锁分析您的应用程序。 Slim reader writer lock 通常还不错,可能就足够了。
关于c++ - 线程安全的 TBB::concurrent_hash_map 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923849/