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