是std :: stack :: push和std :: stack:pop线程安全吗?

时间:2012-09-03 16:47:02

标签: c++ stl thread-safety

我是否需要使用互斥锁保护push()pop()来电,还是内部线程安全?

我想写的代码看起来像这样

parallel for (int i = 0; i < 100; i++) {
    ...
    s.push(...);
    ...
}

我不确定在哪里查看我正在使用的STL容器的线程安全性。我检查了this reference,但它没有提到有关线程安全的任何内容。

2 个答案:

答案 0 :(得分:3)

您可以从标准库中获得的唯一线程安全保证是您可以从不同的线程读取它们,并且您可以从不同的线程修改不同的实例(即:没有非线程) - 安全全球国家)。

任何从不同线程修改同一对象的尝试都会以撕裂的方式结束。

答案 1 :(得分:2)

它们不是内部线程安全的。在这方面,标准不要求对来自多个线程的容器和容器适配器的写操作是安全的,因此您必须应用一些同步机制。