c++ - std::vectors 是线程安全的吗?

标签 c++ multithreading vector

<分区>

Possible Duplicate:
Is stl vector concurrent read thread-safe?

我有一个多线程程序,它有一定数量的工作人员,每个工作人员都有一个“workerID”,它本质上只是该线程的唯一整数。我想使用结构 vector 来管理这些线程。我的问题是,如果线程 4 想要访问 myVector[4],同时线程 8 想要访问 myVector[8],我会遇到问题吗?

最佳答案

如果您在进入多线程场景之前设置了 vector ,然后您只想从多个线程读取该 vector ,而不修改它,那么它是线程安全的。您甚至可以同时从两个以上的线程读取相同的元素,只要确保没有线程以任何方式修改 vector。将 vector 及其所有元素视为只读。

但是,对于修改,标准库中的容器都不是线程安全的。您需要自己实现同步。

C++11 引入了许多 synchronization primitives ,因此如果您的编译器支持,您可以使用它们。

关于c++ - std::vectors 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144294/

相关文章:

c++ - 这个循环有什么问题吗?

Java - 如何为多个线程同步运行函数

c++ - 当我尝试在 C++ 中创建包含唯一元素的 vector 时发现不起作用

C++ vector 问题

c++ - 调整 vector 的 vector 大小以正确大小的快速方法 (c++)

c++ - 如果基类被公开继承,基类的公共(public)静态函数是否成为派生类的成员函数?

c++ - 返回 std::string 作为 const 引用

c++ - 如何从 View 投影矩阵检索相机原点/位置? (OpenGL)

c# - 线程池的处理器亲和性和线程创建

c - 编译算法的 OpenMP 和单线程版本的更好解决方法是什么?