我知道对std::se
或std::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()
进行同步访问时,我会锁定地图,但我的代码表现不正常,我想知道是否知道这是否会导致不稳定。
答案 0 :(得分:1)
锁定push()
和pop()
是不够的。如果一个线程可以从容器读取而另一个线程正在修改它,两个都需要锁定。