我有一个关于竞态条件的问题。问题如下:
考虑以下两个线程,在共享内存中并发运行(所有变量在两个线程之间共享)。
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(包括2和10)。我理解结果为5:10,但是x如何是2、3或4呢?