拿这个伪代码,
Semaphore S <- 0
non-critical section
wait(S)
critical section
signal(S)
关键部分问题的解决方案是否仅支持互斥?
我知道,由于从未达到过临界区,因此没有死锁的自由,但这也意味着它不支持互斥。
答案 0 :(得分:0)
相互排斥意味着只有1 thread(or process)
可以输入Critical Section
。因此,根据定义,代码不会违反mutual exclusion
。
这里要注意的重要一点是,所有threads
都处于busy-waiting
状态,根本没有progress
,但实际上没有死锁,因为 4个必须出现死锁的条件之一是CIRCULAR WAIT 。但在这种情况下,并非线程在等待彼此。