これは 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なく、それと共存させるために)提案したことがあるかどうか疑問に思っています。特定の理由。