【发布时间】:2017-04-15 08:04:23
【问题描述】:
我有两个线程:
- 线程A插入
std::map - 线程 B 从
std::map中删除
由于std::map::erase 和std::map::insert 使映射的所有迭代器都有效,我似乎不明白在这种情况下会发生争用情况。
【问题讨论】:
-
地图的内部状态可能会在同时执行两个调用时变得混乱。
size浮现在脑海中。 -
既然最新 c++ 标准中只要求 const 函数是线程安全的,而 std::map 不需要是线程安全的,为什么在调用 non-const 时不会出现竞争条件功能?
标签: c++ multithreading iterator race-condition stdmap