互斥算法是否需要原子加载和存储?

问题描述:

我知道Dekker算法和Peterson算法之类的互斥算法需要一个基本的顺序一致的内存模型来工作(或使用内存障碍),但我不清楚他们是否需要原子加载和存储。在wikipedia entry对彼得森的算法是这样说:互斥算法是否需要原子加载和存储?

算法满足三个基本标准,以解决关键的部分问题,只要改变变量转向,标志[0],和国旗1立即并自动传播。

我不清楚上面引用的位以及是否意味着该算法需要原子加载和存储才能工作。看看彼得森的算法,我不明白为什么需要原子加载和存储。我在Dekker's algorithm wikipedia entry中没有看到这种原子性要求的提及。那么Peterson的算法是否需要原子加载和存储,这是否扩展到所有互斥算法?

是的,它确实需要它们是原子的。 Dekker的算法也是如此。

假设转弯和标志不是原子的。这意味着P0可以设置turnflag[0],但是P1仍然可以将它们视为未设置的时间间隔,并且可以进入其临界区域。对称地,P0也可以进入CS。