MapA などのマップを継続的に反復するスレッド (スレッド A) があります。
ここで、要素を MapA に挿入する別のスレッド (ThreadB) があります。
MapA から要素を削除しない
この操作による同時実行の問題はありますか?
MapA などのマップを継続的に反復するスレッド (スレッド A) があります。
ここで、要素を MapA に挿入する別のスレッド (ThreadB) があります。
MapA から要素を削除しない
この操作による同時実行の問題はありますか?
スレッド セーフ/同時実行の問題と、新しいアイテムを挿入するときのイテレータの無効化には違いがあります。
STL は本質的にスレッド セーフではないため、複数のスレッドから STL オブジェクトを読み取る以外のことを行う場合は、必ずミューテックス ロックを行ってください。
ただし、に挿入しても、std::map
既存の反復子は無効になりません (「STL マップへの挿入は、他の既存の反復子を無効にしますか?」を参照してください) 。