在不同的线程中使用map :: empty和map :: insert

时间:2018-02-27 10:20:08

标签: c++ multithreading stl stdmap

在没有同步的情况下在2个不同的线程中使用map :: empty和map :: insert是否安全?

with filter as (
   select profile_id 
   from ...
   where ...
)
select *
from t_profile
where profile_id in (select profile_id from filter)
   or active_profile_id in (select profile_id from filter);

1 个答案:

答案 0 :(得分:5)

不,这不安全。 std::map 是线程安全的。

因此,您需要使用互斥技术等同步技术。请注意,即使使用互斥锁,在使用改变映射的方法时,仍然存在使其他线程上的任何迭代器无效的风险。