我正在寻找线程安全映射的解决方案,但包括 tbb 所有内容库都不是线程安全的擦除、清除函数。由于性能问题,我不想使用互斥体。我在互联网上搜索了很长时间,但仍然找不到任何关于此的例子,而且我的长篇文章英语也很差。我搜索了很多东西,比如 const 对于 c++11 是线程安全的,但我无法弄清楚。
我尝试了这个来复制地图,但它也不是线程安全的。
__forceinline ActiveMap & GetActiveMap() { return m_activeCollection; }
当我尝试复制地图而另一个线程在其中时,此代码崩溃。
(我猜你正在使用Visual c ++,因为__forceinline
关键字')
- Visual
Studio 2013(我猜是Visual studio 2015)带有一小组并发数据结构。 标头
<concurrent_unordered_map.h>
实现您可以使用的并发映射。尝试使用锁分析您的应用程序。纤薄的阅读器写入器锁通常不会那么糟糕,可能就足够了。