これは 2 つの部分からなるちょっとした質問で、すべて のアトミック性に関するものですstd::shared_ptr
。
1.
私が知る限り、それはアトミックstd::shared_ptr
な唯一のスマートポインターです。<memory>
の非アトミック バージョンがstd::shared_ptr
利用可能かどうか疑問に思っています ( <memory>
. boost::shared_ptr
アトミックでもあることは知っていますが(BOOST_SP_DISABLE_THREADS
定義されていない場合)、別の選択肢があるのでしょうか?と同じセマンティクスを持つものを探していますがstd::shared_ptr
、原子性はありません。
2.std::shared_ptr
アトミックである理由がわかりました。ちょっといいですね。ただし、すべての状況に適しているわけではなく、C++ には歴史的に「使用した分だけ支払う」というマントラがありました。複数のスレッドを使用していない場合、または複数のスレッドを使用しているがスレッド間でポインターの所有権を共有していない場合、アトミック スマート ポインターは過剰です。2 番目の質問は、なぜC++11で非アトミック バージョンが提供されなかったのかということstd::shared_ptr
です。(理由があると仮定して) (答えが単純に「非アトミック バージョンはまったく考慮されなかった」または「誰も非アトミック バージョンを要求したことがない」である場合は問題ありません!)。
shared_ptr
質問 2 で、誰かが の非アトミック バージョンを(Boost または標準化委員会に) ( のアトミック バージョンを置き換えるのではshared_ptr
なく、それと共存させるために)提案したことがあるかどうか疑問に思っています。特定の理由。