0

我知道对std::set or的多线程读取访问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()同步访问时锁定了地图,但我的代码行为不正常,我想知道这是否会导致不稳定。

4

1 回答 1

1

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

于 2013-07-16T06:31:42.113 回答