在信号量中实现等待代码时,我们使用以下代码:
wait(semaphore s) { while(s<=0); s -= 1;}
相反,我们可以使用:
wait(semaphore s) { while(s==0); s -= 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)
因此,您还需要检查负计数器值。