ホームページ  >  記事  >  バックエンド開発  >  C 標準には非アトミック `std::shared_ptr` が含まれていないのはなぜですか?

C 標準には非アトミック `std::shared_ptr` が含まれていないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 02:03:28781ブラウズ

Why Doesn't the C   Standard Include a Non-Atomic `std::shared_ptr`?

非アトミック スマート ポインター: C 標準に存在しない点を探る

C メモリ管理の領域では、std::shared_ptrは、アトミックな操作により、優れたスマート ポインターとして機能します。これにより、標準メモリ ライブラリ内に非アトミックな対応物が存在しないのはなぜでしょうか?

1 という疑問が生じます。 std::shared_ptr の非アトミックな代替手段

std::shared_ptr はアトミックな動作を提供しますが、一部のシナリオではそのようなオーバーヘッドが保証されない場合があります。これに対処するために、非アトミック参照カウントのスマート ポインターを提供する外部ライブラリが登場しました。ただし、標準メモリ ライブラリ自体にはそのような機能がありません。

2. C 11 の欠如: 理由と議論

実用性が認識されていたにもかかわらず、std::shared_ptr の非アトミック バージョンの提案は C 11 標準化プロセス中に拒否されました。この決定には、次のようないくつかの議論がありました。

  • 悪用の可能性: 非アトミック スマート ポインタはマルチスレッド コンテキストで誤って使用され、デバッグが困難なエラーにつながる可能性があります。
  • 一貫性と相互運用性: アトミック機能を備えた単一の「ユニバーサル」shared_ptr を維持することで、サードパーティのライブラリを含む C ライブラリ間の相互運用性がよりスムーズになります。
  • パフォーマンスに関する考慮事項: アトミック操作にはパフォーマンスのコストがかかりますが、特に移動構築と移動割り当てを利用する場合には、法外に高価ではありません。
  • カスタマイズ オプション: プログラマが非アトミックな動作を必要とする場合、独自のカスタム参照カウント スマート ポインタ実装を作成することは妨げられません。

結論

非アトミック std::shared_ptr が存在しないC 標準は、誤用の可能性、一貫性、パフォーマンス、カスタマイズの柔軟性に関する懸念に基づいた慎重な決定の結果です。外部ライブラリはそのような代替手段を提供できますが、標準自体はメモリ管理のための普遍的なアトミック スマート ポインタの利点を優先しています。

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

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