最近项目中发现一个c++stl容器多线程查找可能出现CPU占用率100%的问题。
问题是这样的,线程A和线程B共享一个stl::map。其中线程A对map有查找的操作,线程B对map有删除的操作。收集其core文件后发现线程A一直在map的查找中循环。看map查找函数中确实用一个while循环实现。确定为线程B删除了线程A查找的值导致线程A中陷入了map表查找死循环中。
总结:C++STL容器部分操作时多线程不安全的。在多线程情景下要使用STL容器必须考虑到这种情景。
C++STL容器部分操作多线程不安全
最新推荐文章于 2024-07-03 23:14:25 发布