2

我是否需要使用互斥锁来保护我的push()pop()调用,或者它们是内部线程安全的?

我想写的代码是这样的

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

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

4

2 回答 2

3

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

于 2012-09-03T16:49:59.133 回答
3

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

任何从不同线程修改同一个对象的尝试都会以泪水告终。

于 2012-09-03T16:50:08.940 回答