ミューテックスで自分push()
とpop()
呼び出しを保護する必要がありますか、それとも内部でスレッドセーフですか?
書きたいコードはこんな感じ
parallel for (int i = 0; i < 100; i++) {
...
s.push(...);
...
}
使用しているSTLコンテナのスレッドセーフについてどこを見ればよいかわかりません。このリファレンスを確認しましたが、スレッドセーフについては何も言及されていません。
ミューテックスで自分push()
とpop()
呼び出しを保護する必要がありますか、それとも内部でスレッドセーフですか?
書きたいコードはこんな感じ
parallel for (int i = 0; i < 100; i++) {
...
s.push(...);
...
}
使用しているSTLコンテナのスレッドセーフについてどこを見ればよいかわかりません。このリファレンスを確認しましたが、スレッドセーフについては何も言及されていません。
それらは内部的にスレッドセーフではありません。この点で安全であるために、複数のスレッドからのコンテナーおよびコンテナーアダプターへの書き込み操作は、標準では要求されていないため、何らかの同期メカニズムを適用する必要があります。
標準ライブラリから期待できる唯一のスレッドセーフ保証は、さまざまなスレッドからそれらを読み取ることができ、さまざまなスレッドからさまざまなインスタンスを変更できることです(つまり、非スレッドセーフのグローバル状態はありません)。
異なるスレッドから同じオブジェクトを変更しようとすると、涙が出ます。