プログラムの実行に沿ってある種の合計を計算するために、共有変数、たとえばdoubleを使用する場合。それはとにかく不安定な操作に対して脆弱でしょうか?つまり、複数のコアが非同期でこの変数にアクセスし、不安定な結果を引き起こす可能性がありますか?
例:これはグローバル変数です:
double totalTime = 0;
各コアでコマンドが呼び出されます。
totalTime += elapsedTime;
この最後の操作/ステートメントは、totalTimeの値を取得し、それをCPUレジスターに入れてから、加算を実行することによって実行されます。複数のコアが同時に同じ値を取り、新しい経過時間を追加すると、レイテンシーのために、totalTimeに格納されている値が間違った値で上書きされることが想像できます。それは可能ですか?どうすればこれを解決できますか?
ありがとうございました。