ホームページ > バックエンド開発 > C++ > C 標準ライブラリには std::shared_ptr に相当する非アトミックなものがないのはなぜですか?

C 標準ライブラリには std::shared_ptr に相当する非アトミックなものがないのはなぜですか?

Susan Sarandon
リリース: 2024-11-03 03:06:29
オリジナル
812 人が閲覧しました

Why is there no non-atomic equivalent of std::shared_ptr in the C   standard library?

std::shared_ptr と同等の非アトミックなケースの検討

はじめに

C 11 のスマート ポインターは、メモリ管理のための強力なメカニズムを提供します。 std::shared_ptr は共有所有権の主な選択肢です。ただし、そのアトミックな性質により、特定のシナリオでは不必要または望ましくないオーバーヘッドが発生します。この記事では、標準ライブラリに std::shared_ptr に相当する非アトミックなものが存在しないことを調査し、この決定の背後にある潜在的な理由を検討します。

非アトミックな代替手段の探索

質問の前提に反して、std::shared_ptr は唯一のスマート ポインターではありません。 <記憶>原子性を特徴とする。 std::weak_ptr もアトミックであり、非所有参照を必要とするシナリオに潜在的なソリューションを提供します。それにもかかわらず、専用の非アトミックなshared_ptr代替案への関心は、ライブラリ内に認識されているギャップを示唆しています。

除外の理由

非アトミックの潜在的な利点にもかかわらず、 atomicshared_ptr を C 標準委員会は C 11 に含めないことを選択しました。この決定は、2010 年の議論での激しい議論から生まれました。ラッパースウィルのミーティング。これを含めることに対する反対意見には次のものが含まれます。

  • 将来のスレッド使用の可能性: 非アトミックなshared_ptrsがマルチスレッドコンテキストで誤って使用される可能性があり、検出が困難な微妙なエラーが発生する可能性があります。
  • スマート ポインターの一貫性設計: すべてのユースケースで参照カウントを均一に処理する統合されたshared_ptrにより、相互運用性とライブラリの使用が簡素化されます。
  • 最小限のパフォーマンスコスト:shared_ptrでのアトミック操作は、特に次の点を考慮すると法外に高価ではありません。移動操作。アトミック アクションをバイパスします。
  • ユーザー選択肢: 開発者は、必要に応じて独自の非アトミック参照カウント スマート ポインターを自由に作成できます。

結論

非アトミックな参照カウントの不在-C 11 標準の std::shared_ptr に相当するアトミックは多面的です。 「使用した分だけ支払う」原則は損なわれますが、一貫性、エラー回避、パフォーマンスのオーバーヘッドを最小限に抑えることが優先されます。この決定は、最適な柔軟性の提供とコードの堅牢性の確保との間の妥協点を反映しています。

以上がC 標準ライブラリには std::shared_ptr に相当する非アトミックなものがないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート