我正在寻找线程安全地图的解决方案,但是包括tbb所有内容库都不是线程安全的擦除,清除功能。我不想因为性能问题而使用互斥锁。我在互联网上搜索它很长一段时间,但我仍然无法找到任何关于这个的例子,而且我的篇幅也很糟糕。我搜索了很多像const这样的东西对c ++ 11是线程安全但我无法弄明白。
我试过这个来复制地图,但它也不是线程安全的。
__forceinline ActiveMap & GetActiveMap() { return m_activeCollection; }
当我尝试复制地图而其他线程在其中时,此代码崩溃。
答案 0 :(得分:2)
(由于__forceinline
关键字,我猜你正在使用visual c ++)
Visual Studio 2013(我猜Visual Studio 2015)带有一小组并发数据结构。标题<concurrent_unordered_map.h>
实现了您可以使用的并发映射。
尝试使用锁定配置应用程序。超薄的读写器锁定通常不是那么糟糕,可能就足够了。