Binary Semaphore发出两次信号后会发生什么?
即假设s是具有s=1
现在我们关注 -
wait(s),signal(s),signal(s)
s变为0还是1?
答案 0 :(得分:0)
二进制信号量将用于保护某些资源,因此一次只能有一个进程访问它。
这个过程会进行等待,假设信号量为1(资源不是很忙)会使信号量变为0。
当该进程完成资源时,它会发出信号,允许其他进程访问资源,使信号量= 1。
没有理由为什么这个过程会发出两次信号,也没有任何理由说明为什么其他过程会在等待之前发出信号(让我知道你是否想过一个),所以连续两次信号将是一个错误。现在,如果我正在编写OS原语实现,我判断将信号保持为1比将其置为0更好,并且可能一直将资源锁定。
关于信号量的标准文本谈论增加和减少计数,但这是因为它是计算信号量的有用方法。实际信号量在实际操作系统中以奇怪的方式使用时的行为方式取决于实现,并且可能不值得作为一般理论进行检查。