http://en.wikipedia.org/wiki/Lamport%27s_bakery_algorithm
我有一些问题需要理解这个算法。如果当前线程和线程,我在for循环中看到的那一刻是相同的,会发生什么?
主题:0,1,2
线程1获取票证1.线程2获取票证2.线程0不执行任何操作。
Array = i:0,1,2
第1轮:
第2轮:
(1,1)> (1,1)错了。 (1,1)> (2,2)错了。
两个线程都在等待......
怎么了?这是一个僵局吗?
答案 0 :(得分:2)
当不等式不保持时,算法中的while循环允许线程进入临界区。它说:等待条件(Number [j]!= 0)&& ((Number [j],j)<(Number [i],i)为真。
由于(1,1)不大于(1,1),线程1可以通过循环并进入临界区。