从std :: map或std :: set线程安全复制?

时间:2013-07-16 06:28:11

标签: multithreading map stl thread-safety set

我知道对std::sestd::map的多线程读取访问是安全的,但是如何进行复制操作

std::map<int, int> node_info;
int node = 2;
int node_value;

if (node_info.find(node) != node_info.end())
   current_val = map_of_val[node].front();

当我使用.push().pop()进行同步访问时,我会锁定地图,但我的代码表现不正常,我想知道是否知道这是否会导致不稳定。

1 个答案:

答案 0 :(得分:1)

锁定push()pop()是不够的。如果一个线程可以从容器读取而另一个线程正在修改它,两个都需要锁定。