我读过“Semaphores小书”,在第41页中,可以解决可承受的障碍问题。 我面临的问题是,它为什么赢得僵局。
1 # rendezvous
2
3 mutex.wait()
4 count += 1
5 if count == n:
6 turnstile2.wait() # lock the second
7 turnstile.signal() # unlock the first
8 mutex.signal()
9
10 turnstile.wait() # first turnstile
11 turnstile.signal()
12
13 # critical point
14
15 mutex.wait()
16 count -= 1
17 if count == 0:
18 turnstile.wait() # lock the first
19 turnstile2.signal() # unlock the second
20 mutex.signal()
21
22 turnstile2.wait() # second turnstile
23 turnstile2.signal()
在这种解决办法中,从第15条到第20条之间,在保持导致僵局的休mut(第18条)的同时,呼吁等待是不好的习惯吗? 请解释。 谢谢。