std::stack::push和std::stack:pop是线程安全的
Are std::stack::push and std::stack:pop thread safe?
我需要用互斥锁保护我的push()
和pop()
调用吗?还是它们在内部是线程安全的
我想写的代码看起来像这个
parallel for (int i = 0; i < 100; i++) {
...
s.push(...);
...
}
我不确定在哪里可以查看我正在使用的STL容器的线程安全性。我检查了这个参考资料,但它没有提到任何关于线程安全的内容。
它们不是内部线程安全的。在这方面,标准不要求从多个线程对容器和容器适配器进行写入操作是安全的,因此您必须应用一些同步机制。
您希望从标准库获得的唯一线程安全保证是,您可以从不同的线程读取它们,并且可以从不同线程修改不同的实例(即:没有非线程安全的全局状态)。
任何从不同线程修改同一对象的尝试都将以撕裂告终。
相关文章:
- std::stack 是连续的吗?
- std::stack的奇怪行为,pop()返回相同的值
- std :: vector用作堆栈和std :: stack之间是否存在任何复杂性差异
- 将std ::数组推到std :: stack
- C++ std::stack 内容在离开函数时不会自由
- 尝试访问 std::stack 的索引
- 如何打印std::stack的内容并返回其大小
- 错误:'class std::stack<>'没有名为 'pop_back' 的成员
- std::stack::push和std::stack:pop是线程安全的
- 将std::stack.pop()方法的结果存储到一个变量中
- 获取std::stack后面的容器
- C++ std::stack Traversal
- 使用 std::stack 而不仅仅是 deque、vector 或 list 有什么优点和缺点
- 是使用双链表实现的 std::stack
- 数据库连接池的原始指针或std::stack中的std::shared_ptr
- 无法将指针从'std::stack<_Ty>'转换为'this' 'std::stack<_Ty> &'
- std::stack如何组织内部存储
- std::stack和std::queue缓存友好
- 如何对std::stack使用boost::序列化
- 理解std::stack的容器模板参数