<分区>
Possible Duplicate:
Is stl vector concurrent read thread-safe?
我有一个多线程程序,它有一定数量的工作人员,每个工作人员都有一个“workerID”,它本质上只是该线程的唯一整数。我想使用结构 vector 来管理这些线程。我的问题是,如果线程 4 想要访问 myVector[4],同时线程 8 想要访问 myVector[8],我会遇到问题吗?
<分区>
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/