为什么我们在信号量中使用小于或等于(< =)符号?

时间:2016-03-13 06:53:12

标签: operating-system synchronization semaphore

在信号量中实现等待代码时,我们使用以下代码:

wait(semaphore s) { while(s<=0); s -= 1;}

相反,我们可以使用:

wait(semaphore s) { while(s==0); s -= 1;}

结果将是相同的。那么为什么大多数人都喜欢使用第一个呢?

1 个答案:

答案 0 :(得分:1)

可以使用负值初始化(计数)信号量,例如让单个线程等到其他5个线程到达特定点:

shared:
  semaphore with counter initialised to -4

waiter thread:
  wait(semaphore)
  print "Done waiting"

other threads:
  incredible important work
  post(semaphore)

因此,您还需要检查负计数器值。