考虑以下使用信号量的生产者-消费者问题的过程:
以下哪一项是正确的?
(A)生产者将能够向缓冲区添加一个项目,但消费者永远不能消费它。
(B)消费者将从缓冲区中移除不超过一件物品。
(C)如果消费者在缓冲区为空时成功获取到信号量,就会发生死锁。
(D)对于无死锁操作,信号量 n 的起始值必须是 1 而不是 0。
答案: (C)
说明:最初,缓冲区中没有元素。
信号量s=1和信号量n=0 。
我们假设当缓冲区为空时,最初的控制权交给了消费者。
semWait(s)递减信号量 ‘s’ 的值。现在,s = 0 并且semWait(n)递减信号量 ‘n’ 的值。
由于信号量 ‘n’ 的值小于 0 ,控制卡在函数semWait() 的 while 循环中并出现死锁。
因此,如果消费者在缓冲区为空时成功获取 semaphore ,则会发生死锁。
观看 GeeksforGeeks 视频说明:
如果您发现上面的帖子有任何错误,请在下面发表评论。
这个问题的测验