带有信号灯的临界区
Critical section with sephamores
拿这个伪代码,
Semaphore S <- 0
non-critical section
wait(S)
critical section
signal(S)
这个临界区问题的解决方案是否只支持互斥?
我知道没有死锁的自由,因为永远不会到达临界区,但这是否也意味着它不支持互斥。
互斥意味着只有1个thread(or process)
可以进入Critical Section
。所以根据定义,代码不违反 mutual exclusion
.
这里需要注意的是,所有的threads
,都会处于busy-waiting
状态,根本就没有progress
,但实际上并没有死锁,因为死锁的 4 个必须发生的条件之一是 CIRCULAR WAIT。但在这种情况下并不是线程在互相等待。
拿这个伪代码,
Semaphore S <- 0 non-critical section wait(S) critical section signal(S)
这个临界区问题的解决方案是否只支持互斥?
我知道没有死锁的自由,因为永远不会到达临界区,但这是否也意味着它不支持互斥。
互斥意味着只有1个thread(or process)
可以进入Critical Section
。所以根据定义,代码不违反 mutual exclusion
.
这里需要注意的是,所有的threads
,都会处于busy-waiting
状态,根本就没有progress
,但实际上并没有死锁,因为死锁的 4 个必须发生的条件之一是 CIRCULAR WAIT。但在这种情况下并不是线程在互相等待。