c++ - 何时在迭代中使用互斥量。 C++

标签 c++ multithreading stl vector mutex

C++ 提供了非常方便的迭代遍历容器的方式,

for(vector<int>::const_iterator p = c.begin(); p!=c.end();p++){}

但是如果在进行时,有人 c.push_back(10)

它会打破循环吗?

每次使用容器操作都要用mutex吗?

谢谢。

最佳答案

是的,这里存在竞争条件。

如果您要从多个线程使用 STL 容器,并且这些线程中至少有一个可能会修改该容器,则您需要同步对容器的访问。

执行此操作的最简单方法是使用互斥体。

另一种选择是寻找或实现一个提供您所需功能的线程安全容器。

关于c++ - 何时在迭代中使用互斥量。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4456113/

相关文章:

c++ - 使用自定义宏扩展 C++ 的企业架构师语法

c++ - 使用 C++ 从 bios 获取 Assets 标签和序列号

c - 如何从另一个线程调用 Gtk API?

java - java 中的 Push_back 和 pop_back

c++ - 访问嵌套的容器成员

c++ - C++17 中的 std::map::insert 更改

c++ - 从堆中移除元素

c++ - Windows Socket 无法绑定(bind) VPN IP 地址

java - 如何在jsf中的bean中使用线程

多线程 - 一组中所有对之间的计算