はじめに
C 11 でのスレッドセーフ シングルトンの実装は、マルチスレッドの導入以来議論のテーマとなってきました。ミューテックスはスレッド セーフを実現する簡単な方法を提供しますが、パフォーマンスのオーバーヘッドが発生する可能性があります。この記事では、ミューテックスを使用せずにマルチスレッドセーフなシングルトンを実装する別のアプローチについて説明します。
同時待機による遅延初期化
C 11 では、実装を簡素化する新しい言語機能が導入されています。遅延初期化の。静的ローカル変数がすでに初期化されている場合、同時実行は待機するようになり、手動ロックの必要がなくなります。
実装
シングルトン インスタンスを取得する単純な静的関数次のように実装できます:
<code class="cpp">static Singleton& get() { static Singleton instance; return instance; }</code>
コンパイラが標準を適切に実装している限り、この関数は C 11 で正しい動作を提供します。
シングルトンの禁止
この簡略化された実装にもかかわらず、著者はシングルトンの使用は一般的に推奨されないことを強調しています。シングルトンには固有の制限があるため、シングルトンを完全に避けることを推奨しています。
追加メモ
以上が``を使用せずにC 11でスレッドセーフなシングルトンを作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。