考虑使用通用信号量S,F和E解决有界缓冲区生产者/消费者问题的解决方案。信号量S是互斥量信号量,其初始化为1。信号量F对应于缓冲区中的空闲插槽数,并已初始化信号量E对应于缓冲区中元素的数量,并初始化为0。
以下哪个交换操作可能会导致死锁?
- 在生产者流程中交换等待(F)和等待(S)
- 使用者流程中的信号(S)和信号(F)交换
(A)我只
(B)仅II
(C)我和我都不
(D)我和我答案: (A)
说明:假设F =0。现在,如果Wait(F)和Wait(S)互换并且生产者中的Wait(S)成功,则生产者将等待在使用者中发出信号的Wait(F),这将永远不会成功,因为它正在等待生产者发出Wait(S)信号。因此,可能会发生死锁。
这个问题的测验