C++ 是不是有任何线程安全可以写入(比没有锁的线程安全类似物更快)组件?
Posted
技术标签:
【中文标题】C++ 是不是有任何线程安全可以写入(比没有锁的线程安全类似物更快)组件?【英文标题】:C++ Is there any threadsafe to write into (faster than not thread safe analogs busted with locks) component?C++ 是否有任何线程安全可以写入(比没有锁的线程安全类似物更快)组件? 【发布时间】:2011-08-20 22:18:33 【问题描述】:所以我尝试了一些组件(映射、集合、向量、数组、队列等),我总是必须让 tham 线程安全……这让 tham 变慢了……是否有任何线程安全可写入组件?在 Boost 中还是在任何地方?
【问题讨论】:
如果你想要一般的线程安全,那么我相信 Boost 容器都没有提供这样的功能,你基本上必须序列化对整个容器的访问。如果不修改容器,不同元素的并发访问应该没问题。 请记住,C++ 本身是非线程安全的,并且没有线程的概念。是否提供线程 API 取决于实现(当然,几乎所有 API 都提供)。如果您使用的是特定平台,我们可能会推荐针对特定平台的优化。 【参考方案1】:您可以在英特尔的线程构建模块中找到一些。您还可以在 Microsoft 的 PPL 中找到一些。
【讨论】:
【参考方案2】:您可以看看 Max Khiszinsky 的 libcds
: Concurrent Data Structures。
它包含高度通用/可配置的无锁容器和算法。它带有广泛的测试。我会说,文档大约是平均水平。
琐事 该库看起来已准备好进行提升,但 (AFAICT) 它取决于它可能包含的受专利保护的算法
【讨论】:
【参考方案3】:Boost.Lockfree 最近正在接受 Boost 审核。我不知道这次审查的结果。
【讨论】:
以上是关于C++ 是不是有任何线程安全可以写入(比没有锁的线程安全类似物更快)组件?的主要内容,如果未能解决你的问题,请参考以下文章