1. 程式人生 > >C++STL容器部分操作多執行緒不安全

C++STL容器部分操作多執行緒不安全

最近專案中發現一個c++stl容器多執行緒查詢可能出現CPU佔用率100%的問題。
問題是這樣的,執行緒A和執行緒B共享一個stl::map。其中執行緒A對map有查詢的操作,執行緒B對map有刪除的操作。收集其core檔案後發現執行緒A一直在map的查詢中迴圈。看map查詢函式中確實用一個while迴圈實現。確定為執行緒B刪除了執行緒A查詢的值導致執行緒A中陷入了map表查詢死迴圈中。
總結:C++STL容器部分操作時多執行緒不安全的。在多執行緒情景下要使用STL容器必須考慮到這種情景。