我有一个关于比赛条件场景的问题。问题:
考虑以下两个线程,它们在共享内存中同时运行(所有变量在两个线程之间共享)。
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?