C ++需要线程安全的测试容器(非微软)

时间:2011-03-24 07:31:46

标签: c++ multithreading stl containers

任何人都有关于线程安全数据容器的想法,比如queue,map? 当我们使用/ MT开关进行编译时,我不想要线程安全的STL。

真正的线程安全测试STL容器。

4 个答案:

答案 0 :(得分:9)

线程安全容器通常没有任何意义。考虑一个'线程安全'队列:

if(!qu.empty())
{
    // 1
    qu.pop();
}

如果队列被修改并且变空,那该怎么办?它破坏了代码。这就是为什么你应该在你的代码而不是'线程安全'容器中使用锁。

答案 1 :(得分:1)

Intel TBB专为此而设计。

答案 2 :(得分:1)

/ MT意味着您希望链接到多线程运行时库(与多线程应用程序兼容),但它不会使运行时库是线程安全的。

答案 3 :(得分:0)

Microsoft并行模式库(PPL)包括concurrent_vectorconcurrent_queue,他们添加了unordered_mapunordered_multimapunordered_set和{{的并发版本1}}到并发运行时样本包v0.33和更新。