std::shared_ptr はどの程度のスレッド セーフ性を提供しますか?
std::shared_ptr は、参照カウントと自動化を提供するスマート ポインターです。メモリ管理。プラットフォームに依存せずにスレッドセーフな参照カウントを保証しますが、スレッドセーフのいくつかの側面については明確にする必要があります。
コア スレッド セーフ保証:
スレッド セーフの制限:
デモの例:
次の疑似コードを考えてみましょう:
// Thread I shared_ptr<A> a (new A (1)); // Thread II shared_ptr<A> b (a); // Thread III shared_ptr<A> c (a); // Thread IV shared_ptr<A> d (a); d.reset (new A (10));
スレッド IV でリセット() を呼び出した後、他のスレッドには新しいオブジェクトのみが表示されると考えるのは誤りです。スレッド II、III、IV は引き続き元のオブジェクトを指し、スレッド IV だけが新しいオブジェクトを指します。
結論:
std::shared_ptr参照カウントと破棄に対して強力なスレッドセーフ保証を提供します。ただし、格納されたオブジェクトのスレッドセーフ性は保証されていないため、個別に考慮する必要があることを覚えておくことが重要です。
以上がstd::shared_ptr は本当にスレッドセーフですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。