1
的std ::地圖併發我有一個線程(線程A),它在地圖不斷迭代說MAPA。一個插入線程,一個讀線程
現在有一個其他線程(ThreadB),其插入元件進入MAPA。
我不刪除地圖
元素會不會有此操作任何併發問題?
的std ::地圖併發我有一個線程(線程A),它在地圖不斷迭代說MAPA。一個插入線程,一個讀線程
現在有一個其他線程(ThreadB),其插入元件進入MAPA。
我不刪除地圖
元素會不會有此操作任何併發問題?
有線程安全/併發問題和插入新項目時無效迭代器之間的區別。
STL本質上不是線程安全的,所以在執行任何操作時都要確保互斥鎖,而不僅僅是從多線程讀取STL對象。
然而,插入到std::map
並不否定現有的迭代器(見Does insertion to STL map invalidate other existing iterator?)
謝謝sonicwave和Benoit – sri
我不關心無效迭代,因爲我不斷循環,如果我到達地圖的最後,我重新迭代begining。 – sri
你應該擔心。當迭代器無效時,您可能永遠無法在地圖末尾對其進行測試,因爲運算符「++」或「 - 」會做出不可預測的事情。 – Benoit