允许负面信号的信号量如何工作?

时间:2016-04-05 04:56:01

标签: multithreading concurrency semaphore

我在网上读到了非常矛盾的信息来源,关于信号量是否可以具有非零值。在某些实现中,这似乎表示等待线程的数量,但我似乎无法得到这个。如果我理解正确,计数值表示有多少打开的“槽”。首先,如果信号量阻止等待呼叫直到计数为正,我看不出你如何能有负槽。我也没有看到等待线程的数量与打开的插槽数量有什么关系。在这些情况下,计数器变量的负值如何工作?

请参阅此video,了解他如何解释具有负值的信号量。

1 个答案:

答案 0 :(得分:0)

请引用来源或粘贴一些代码。

信号量通常是二进制的,意味着它们的值为0或1。

  1. 您指的是count
  2. 一般来说,count可以是等待线程的数量。我不明白你提到的插槽。

    1. 等待线程通常会进入队列并进入休眠状态。