![](/img/trans.png)
[英]does std::map::end() return different results from different threads?
[英]Access std::map from different threads
我读过std::map
不是线程安全的。 因此,如果我要从其他线程访问(读/写) std::map
,是否应该将相关代码包装在关键部分?
注意:我正在使用Visual C ++ 2010。
简单的答案:是的。 但是如何正确地做到这一点可能很棘手。 基本策略是将对map
调用包装在关键部分,包括包装迭代器的生命周期。
但是,您还需要确保您的应用程序对地图的假设也得到了谨慎处理。 例如,如果您需要从地图中删除许多相关项,请确保其他线程仅容忍那些丢失的某些项,或者将整个批处理操作包装在Critsec中。 这很容易失控,因此您最终将大量代码包装在关键部分中,最终将导致死锁和性能下降。 小心!
刚刚同时写了一个问题。 底线:使用读/写锁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.