信号量阻塞和解除阻塞

时间:2015-10-24 23:00:22

标签: multithreading semaphore

我今天开始阅读有关信号量的信息并提出理论问题。

假设你有2个线程,线程A和线程B,每个都有一个信号量,信号量A和信号量B.在这个非常假设的示例中,信号量B的值是-3,目前是阻塞,然后线程A发出B.signal()。

我认为我在阅读中已经明白,信号量B现在已经解锁并且增加到-2的值。 B的线程是否会继续执行,直到它遇到B.wait(),即使B的信号量的值是-2?

1 个答案:

答案 0 :(得分:0)

来自wikipedia

  

signal:将信号量变量的值递增1.之后   增量,如果预增量值为负(意味着有   等待资源的进程),它从中传输阻塞的进程   信号量等待队列到就绪队列。

因此,如果存在任何可用的硬件线程(或可以被碰撞的低优先级线程),则B被移动到Os的就绪队列并启动。

但更严重的问题是你是如何只用2个线程到达-3的......如果A有它应该是零,当B然后想要它然后它变为-1。