据我所知,Dekker算法和Peterson算法等互斥算法需要一个基本的顺序一致的内存模型才能工作(或使用内存屏障),但目前尚不清楚对我来说,如果他们需要原子载荷和商店。在Peterson算法的wikipedia entry中,它说:
该算法满足解决临界区问题的三个基本准则,前提是变量转换,flag [0]和flag 1立即和原子地传播。
我不清楚上面引用的位以及这是否意味着算法需要原子载荷和存储才能工作。看看彼得森的算法,我不明白为什么它需要原子载荷和存储才能工作。我没有在Dekker's algorithm wikipedia entry中看到提及这种原子性要求。那么Peterson的算法是否需要原子载荷和存储,并且这是否扩展到所有互斥算法?
答案 0 :(得分:0)
是的,确实要求它们是原子的。 Dekker的算法也是如此。
假设转弯和旗帜不是原子的。这意味着P0可以设置turn
和flag[0]
,但是存在一段时间,P1仍然可以将它们视为未设置,并且可以进入其临界区。对称地,P0也可以进入CS。