ホームページ  >  記事  >  バックエンド開発  >  なぜ C には非アトミックな `std::shared_ptr` がないのでしょうか?

なぜ C には非アトミックな `std::shared_ptr` がないのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-01 01:21:02788ブラウズ

 Why Doesn't C   Have a Non-Atomic `std::shared_ptr`?

std::shared_ptr の非原子的同等物とそれが に存在しない理由

std::shared_ptr は、次のように有名になりました。アトミックに増加および減少する共有所有権スマート ポインター。ただし、原子以外の等価物が存在するかどうかという問題が生じます。

1.非アトミックな代替オプション

<メモリ>の広範な検査にもかかわらず、ヘッダーにあるため、std::shared_ptr に相当する非アトミックなものは簡単にアクセスできません。ただし、標準以外の解決策もあります。

2.非アトミック std::shared_ptr が C 11 に含まれなかった理由

C 11 に非アトミック バージョンが存在しないのは、2010 年の Rapperswil 会議中に行われた議論に由来します。

非アトミック オプションに反対する理由:

  • アトミック性なしで書かれたコードが後でスレッドで使用される場合に潜在的な問題が発生し、デバッグの問題が発生します。
  • 利点
  • アトミック性によるパフォーマンスへの影響が最小限に抑えられ、効率的な移動構築と移動割り当て操作によって軽減されます。
  • カスタムの非アトミック共有の可用性

これらの議論に基づいて、言語ワーキング グループ (LWG) は、C 11 でのshared_ptr の非アトミック バリアントの導入に反対することを決定しました。

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

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