【发布时间】:2016-11-15 17:08:36
【问题描述】:
我了解互斥算法(例如 Dekker 算法和 Peterson 算法)需要底层顺序一致的内存模型才能工作(或使用内存屏障),但我不清楚它们是否需要原子加载和存储。在彼得森算法的wikipedia entry 中,它说:
该算法满足解决临界区问题的三个基本标准,前提是对变量 turn、flag[0] 和 flag1 的更改立即以原子方式传播。
我不清楚上面引用的位以及这是否意味着算法需要原子加载和存储才能工作。查看彼得森的算法,我不明白为什么需要原子加载和存储才能使其工作。我在Dekker's algorithm wikipedia entry 中没有看到这种原子性要求。那么彼得森的算法是否需要原子加载和存储,这是否扩展到所有互斥算法?
【问题讨论】:
标签: multithreading algorithm concurrency synchronization mutual-exclusion