【发布时间】:2011-12-10 15:34:26
【问题描述】:
http://en.wikipedia.org/wiki/Lamport%27s_bakery_algorithm
我有一些问题要理解这个算法。如果当前线程和我正在查看的 for 循环中的那一刻线程相同,会发生什么?
线程:0、1、2
线程 1 拿到票 1。线程 2 拿到票 2。线程 0 什么也不做。
数组 = i: 0, 1, 2
第一轮:
- 线程 1 (j=0):Array[0] = 0。下一个。
- 线程 2 (j=0):Array[0] = 0。下一个。
第二轮:
- 线程 1 (j=1):Array[1] = 1. (1,1) > (1,1)
- 线程 2 (j=1):Array[1] = 1. (1,1) > (2,2)
(1,1) > (1,1) 错误。 (1,1) > (2,2) 错误。
两个线程都在等待...
怎么了?这是死锁吗?
【问题讨论】:
-
这是什么意思:(1,1) > (1,1)?
-
(a, b)
标签: multithreading algorithm for-loop deadlock