ホームページ > バックエンド開発 > C++ > Meyers のシングルトン実装は C 11 および C 03 でスレッドセーフですか?

Meyers のシングルトン実装は C 11 および C 03 でスレッドセーフですか?

Patricia Arquette
リリース: 2024-12-28 10:33:11
オリジナル
222 人が閲覧しました

Is Meyers' Singleton Implementation Thread-Safe in C  11 and C  03?

Meyers のシングルトン実装のスレッド セーフ

遅延初期化を使用した提供された Meyers のシングルトン実装では、コードは C でスレッド セーフです。 11. C 11 標準 (§6.7 [stmt.dcl] p4) に従って、複数の場合スレッドは初期化中にシングルトンへのアクセスを試みますが、他のスレッドは初期化が完了するまで待機します。

GCC と Visual Studio は両方ともこのスレッド セーフティ機能 (動的初期化と同時実行による破棄) をサポートしていますが、実装は異なります。日付:

  • Visual Studio: Visual Studio 以降サポートされています2015
  • GCC: GCC 4.3 以降サポート

対照的に、このコードは C 03 ではスレッドセーフではありません。Meyers の記事「C と二重チェック ロックの危険性」シングルトン パターンのさまざまなスレッドセーフ実装を分析します。最終的に、Meyers は、(C 03 で) インスタンス化メソッドの周りに完全なロックを使用することが、異なるプラットフォーム間での同時実行性を確保する最も簡単なアプローチであると結論付けています。一方、二重チェックされたロック パターンのバリアントは、命令間にメモリ バリアが戦略的に配置されていない限り、特定のアーキテクチャで競合状態を引き起こす可能性があります。

以上がMeyers のシングルトン実装は C 11 および C 03 でスレッドセーフですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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