スマートポインタは、自動メモリ管理や境界チェックなどの追加機能を提供しながらポインタをシミュレートする抽象的なデータ型です。スマートポインタはスレッドセーフですか?
私の質問は、スレッドセーフですか?
スマートポインタは、自動メモリ管理や境界チェックなどの追加機能を提供しながらポインタをシミュレートする抽象的なデータ型です。スマートポインタはスレッドセーフですか?
私の質問は、スレッドセーフですか?
様々な異なるスマートポインタオブジェクトは、さまざまな程度のスレッド安全性を提供します。個々の実装のドキュメントを慎重にチェックして、どのレベルのスレッド安全性が提供されているかを確認する必要があります。
最もよくある質問は、具体的には約std::shared_ptr
とstd::weak_ptr
です。これらは、個々のポインタインスタンスに対して標準的なスレッドセーフティを提供します。つまり、1つのスレッドはshared_ptr
またはweak_ptr
にアクセスしてはならず、別のスレッドがまったく同じshared_ptr
またはweak_ptr
オブジェクトを変更しているか、または変更している必要があります。ただし、同じオブジェクトを参照する別個のポインタには完全なスレッドセーフティがあります。したがって、あるスレッドはshared_ptr
を変更できますが、もう1つのスレッドは寿命がスマートポインタによって管理されている同じ基本オブジェクトにshared_ptr
にアクセスしています。
私は、あなたが言うように、別個の 'shared_ptr'インスタンスにスレッドセーフティを適用しますが、 – LWimsey
@LWimsey yesで指し示されたオブジェクトには適用しないとします。 – Yakk