生产者消费者问题中,如果缺少了signal(full)或signal(empty)对执行结果会有如何影响

来源:百度知道 编辑:UC知道 时间:2024/06/05 23:58:06
希望知道的朋友能给与解决,谢谢了!

如果缺少signal(full),那么表明从第一个生产者进程开始就没有改变信号量full 值,假设缓冲区初始状态为空,一直放产品,直至放满。
此时缓冲池产品已满,但full 值还是0,这样消费者进程执行wait(full)时认为缓冲池是空
而取不到产品,消费者进程一直处于等待状态。
如果缺少signal(empty),假设在生产者进程向n个缓冲区投满产品后消费者进程才开始从
中取产品(初始状态为满),这时empty=0,full=n,那么每当消费者进程取走一个产品empty 值并不改变,
直到缓冲池取空了,empty 值也是0,即使目前缓冲池有n 个空缓冲区,生产者进程要想
再往缓冲池中投放产品也会因为申请不到空缓冲区被阻塞。