1

MapA などのマップを継続的に反復するスレッド (スレッド A) があります。

ここで、要素を MapA に挿入する別のスレッド (ThreadB) があります。

MapA から要素を削除しない

この操作による同時実行の問題はありますか?

4

1 に答える 1

4

スレッド セーフ/同時実行の問題と、新しいアイテムを挿入するときのイテレータの無効化には違いがあります。

STL は本質的にスレッド セーフではないため、複数のスレッドから STL オブジェクトを読み取る以外のことを行う場合は、必ずミューテックス ロックを行ってください。

ただし、に挿入しても、std::map既存の反復子は無効になりません (「STL マップへの挿入は、他の既存の反復子を無効にしますか?」を参照してください) 。

于 2013-01-16T13:36:24.703 に答える