实验五-信号量的实现和应用,一、问题回答
1.在 pc.c 中去掉所有与信号量有关的代码,再运行程序,执行效果有变化吗?为什么会这样?
答:在去掉与信号量有关的代码后,执行结果Customer的消费数据没有按递增的顺序输出,且fread()函数将产生错误。
因为没有信号量P(S)控制,导致生产者可能在缓冲区满后继续生产,导致没有被消费的数据被覆盖,使得消费者消费的数据不是递增序列。同时,没有信号量V(S)控制,导致消费者可能在读取所有数据后仍然继续读取,导致读取的数据无效。没有mutex信号量控制导致出现多进程并发访问缓冲区,导致出现fread()错误。
1