同時実行性: C 11 メモリ モデルのアトミックおよび揮発性
質問:
共有グローバル変数を使用したマルチスレッド環境で、1 つのスレッドが古い値を読み取ることができますか?アトミック変数?データの整合性の確保において、アトミック タイプと揮発性タイプはどのように異なりますか?
答え:
Volatile と Atomic
Volatile の違いは次のとおりです。アトミックアクセスを保証するものではありません。その主な目的は、メモリマップされた I/O および信号処理です。 volatile を std::atomic とともに使用するのは冗長です。
アトミック変数によるメモリ順序付け
アトミック変数の可視性はメモリ順序付けパラメータによって異なります。 used.
データの確保整合性
データの整合性を確保するには、exchange() や fetch_add() などの読み取り-変更-書き込み (RMW) 操作を使用する必要があります。これらの操作は常に「最新」の値に基づいて実行され、古い値のリスクが排除されます。
追加の考慮事項
以上がC 11 のアトミック変数はマルチスレッド環境での古い読み取りを防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。