ホームページ > バックエンド開発 > C++ > Meyers のシングルトン パターンは C 11 以降でスレッド セーフですか?

Meyers のシングルトン パターンは C 11 以降でスレッド セーフですか?

Patricia Arquette
リリース: 2024-12-30 17:04:10
オリジナル
898 人が閲覧しました

Is Meyers' Singleton Pattern Thread-Safe in C  11 and Later?

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

遅延初期化を使用した Meyers のシングルトン パターンの実装では、スレッド セーフティについて疑問が生じます。

マイヤーズのシングルトン実装

シングルトン パターン用に提供されているコードは次のとおりです。

static Singleton& instance()
{
     static Singleton s;
     return s;
}
ログイン後にコピー

スレッド セーフティ分析

C 11 では、これは§6.7 [stmt.dcl] の保証により、実装はスレッドセーフです。 p4:

「変数の初期化中に制御が同時に宣言に入った場合、同時実行は初期化の完了を待ちます。」

GCC (バージョン 4.3 以降) や Visual などのコンパイラーStudio (2015 年以降) はこの機能をサポートしています。

C 03実装

C 03 では、コードはスレッド セーフではありませんでした。 Meyers の記事「C and the Perils of Double-Checked Locking」では、そのような懸念について説明しています。同時実行性を保証するには、インスタンス化メソッドの完全なロックが推奨されましたが、ダブルチェックされたロックのバリアントは、メモリ障壁のない特定のアーキテクチャで競合状態に遭遇する可能性があります。

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

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