shared_ptr
マルチスレッドがない場合、 (boost または tr1 のいずれかから) を使用するためのコピー オン ライトの実装
unique()
は簡単です。マルチスレッド化する場合、どの変更を行う必要がありますか? 参照カウントはアトミックであるため、インスタンスの作成、コピー構築、読み取り、および破棄を特に気にすることなく実行できると想定していますshared_ptr
。一般に、特にコピーオンライトを実装する場合は、それらを更新するのはどうですか? ロックは必要ですか?または使用しますboost::atomic_store
か(なぜ文書化されていないのですか)?shared_ptr
または、 (オプションではない)の完全にアトミックなバージョンを待ち
ますか?
編集:
sfossen、役に立つ返信をありがとう。
したがって、現在のスレッドのみが所有するように、COW を介してデタッチした後にのみポイント先オブジェクトを変更する場合、ロックは必要なく、アトミック ref で shared_ptr を使用する場合、COW 実装はシングルスレッドのものと同じように見えると結論付けます-カウントします。