在没有同步的情况下在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);
答案 0 :(得分:5)
不,这不安全。 std::map
不是线程安全的。
因此,您需要使用互斥技术等同步技术。请注意,即使使用互斥锁,在使用改变映射的方法时,仍然存在使其他线程上的任何迭代器无效的风险。