有sephamores的关键部分

时间:2017-02-28 18:47:26

标签: deadlock semaphore critical-section mutual-exclusion

  1. 拿这个伪代码,

    Semaphore S <- 0 
    non-critical section 
    wait(S)
    critical section 
    signal(S)
    
  2. 关键部分问题的解决方案是否仅支持互斥?

    我知道,由于从未达到过临界区,因此没有死锁的自由,但这也意味着它不支持互斥。

1 个答案:

答案 0 :(得分:0)

相互排斥意味着只有1 thread(or process)可以输入Critical Section。因此,根据定义,代码不会违反mutual exclusion

这里要注意的重要一点是,所有threads都处于busy-waiting状态,根本没有progress,但实际上没有死锁,因为 4个必须出现死锁的条件之一是CIRCULAR WAIT 。但在这种情况下,并非线程在等待彼​​此。