STLにはスレッドのサポートが組み込まれていないため、 マルチスレッド環境でSTLを使用するには、独自の同期メカニズムを使用してSTL コードを拡張する必要があります。例えば
はここを見て:link text
セットはコンテナクラスですので、MSDNは、コンテナのスレッドの安全性について言いたいことは次の通りです。
単一のオブジェクトは、複数のスレッドからの読み取りにスレッドセーフです。例えば、オブジェクトAが与えられると、スレッド1からAを、スレッド2からAを同時に読み出すことは安全である。
1つのスレッドによって1つのオブジェクトが書き込まれている場合、同じスレッドまたは他のスレッド上のそのオブジェクトに対するすべての読み取りと書き込みを保護する必要があります。たとえば、オブジェクトAを指定すると、スレッド1がAに書き込んでいる場合、スレッド2はAからの読み書きを禁止する必要があります。
あるタイプのインスタンスを読み書きすることは安全ですスレッドは、同じ型の別のインスタンスに読み書きしています。たとえば、同じタイプのオブジェクトAとBを指定すると、Aがスレッド1に書き込まれ、Bがスレッド2で読み込まれている場合は安全です。
セットを更新してもイテレータは無効になりません..... –
実際には、標準ではstd :: setに追加または削除するとイテレータが無効にならないことが記載されています明白な例外であると削除される)。 – suszterpatt
コメントをいただき、ありがとうございました。私は実装者の観点から言えば、これは本当に奇妙な要件です。 –