式の中でアトミック変数へのアクセスが 2 回行われています
変数をアクセスの間に変更可能
説明
この欠陥は、C のアトミック型または C++ の std::atomic クラスの変数が 1 つの式の中で 2 回登場する場合に発生します。これには次のようなものがあります。
変数に対する 2 回のアトミックな読み取り操作。
変数に対するアトミックな読み取り操作と別個のアトミックな書き込み操作。
C 標準では、スレッドセーフになっていて、データ レース状態を引き起こさない、アトミック変数に対する特定の操作が定義されています。個別の操作とは異なり、1 つの式における同じアトミック変数に対する 1 組の操作はスレッドセーフではありません。
リスク
スレッドは、1 組のアトミック操作の間にアトミック変数を変更することができ、その結果、データ レース状態になる可能性があります。
修正方法
同じ式の中でアトミック変数を 2 回参照しないようにします。
例
結果情報
| グループ: 同時実行 |
| 言語: C | C++ |
| 既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: ATOMIC_VAR_ACCESS_TWICE |
| 影響度: Medium |
バージョン履歴
R2018b で導入