競合状態のシナリオについて質問があります。質問:
次の 2 つのスレッドを共有メモリで同時に実行することを検討してください (すべての変数は 2 つのスレッド間で共有されます)。
Thread A
for i = 1 to 5 do
x = x + 1;
Thread B
for j = 1 to 5 do
x = x + 1;
シングル プロセッサ システムで、ロードとストアがアトミックであり、x が 0 に初期化され、x がインクリメントされる前にレジスタにロードされる (そして後でメモリに格納される) 必要があると仮定すると、x のすべての可能な値は何ですか?両方のスレッドが完了した後?
答えは 2:10 です。5:10 の結果はわかりましたが、どうして x が 2、3、または 4 になるのでしょうか?