ホームページ  >  記事  >  バックエンド開発  >  C の標準ライブラリが `std::shared_ptr` の非アトミック バージョンを提供しないのはなぜですか?

C の標準ライブラリが `std::shared_ptr` の非アトミック バージョンを提供しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 00:03:02159ブラウズ

Why Doesn't C  's Standard Library Offer a Non-Atomic Version of `std::shared_ptr`?

std::shared_ptr の非アトミック相当物

質問:

はありますか固有のアトミック性が欠けている std::shared_ptr の代替手段はありますか?さらに、C 標準ライブラリには非アトミック オプションが含まれていないのはなぜですか?

答え:

1.非アトミックな代替の利用可能性:

C 標準ライブラリでは、std::shared_ptr の非アトミックなバリアントは提供されていません。ただし、サードパーティのライブラリがそのような実装を提供する場合があります。 C 11 で std::shared_ptr が導入される前は、多くの開発者が独自の参照カウント スマート ポインターを作成し、非アトミック オプションを提供する可能性がありました。

2. C 11 のアトミック std::shared_ptr の根拠:

C 11 標準化プロセス中に、std::shared_ptr の非アトミック バージョンを含める提案が検討され、最終的に拒否されました。この決定には次の議論が影響しました:

  • 誤用の可能性: スレッド コードで書かれた非アトミック スマート ポインターは、微妙でデバッグが難しいエラーを引き起こす可能性があります。
  • 一貫性と相互運用性: std::shared_ptr の単一の一貫したバージョンがあると、ライブラリの相互運用性が促進され、混乱が軽減されます。
  • 低いパフォーマンス コスト: アトミックな操作には、 -オーバーヘッドはゼロですが、ベクトルの消去や挿入などの一般的な操作中のアトミック操作を回避する移動セマンティクスの使用によって軽減されます。
  • カスタム実装: 開発者は、独自の非-オーバーヘッドを作成できます。

提案された非アトミック バージョン:

C 11 での拒否にもかかわらず、非アトミック バージョンの提案があった可能性があります。 std::shared_ptr のアトミック バージョンが Boost または標準委員会に提出されました。しかし、これらの提案は公式規格に含めるための十分な支持を得られませんでした。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。