C++ 容器线程安全指南,位于 http://en.cppreference.com/w/cpp/container#Thread_safety
说
所以我的问题是,假设我有一个
unordered_map<MyKeyClass, MyValueClass> results
,我有几个线程同时运行,并在完成后用 <unique_key, some_value>
填充此地图。保证每个线程返回一个唯一的MyKeyClass。现在这是否意味着我可以安全地同时将值插入到结果中?
如果是,那就回答了我的问题。
如果不是,那么我在生成线程之前插入
现在这是否意味着我可以安全地同时将值插入到结果中?
不。 A
std::unordered_map
本质上不是线程安全的。如果不添加同步,您无法从不同线程修改它。
可以在不修改容器本身的情况下修改容器中的元素。
如果不是,那么我在生成线程之前插入
怎么样,然后就不会有并发插入,只是修改值,如果我理解正确的话应该没问题?
是的。你引用的这句话是关于修改容器中的元素。它不是将元素插入到容器中。您不能同时插入但修改元素。