1.问题:有两个进程pA和pB合作解决文件打印的问题:pA将文件记录从磁盘读入住库存的缓冲区,每次执行一次读一个记录;pB将缓冲区的内容打印出来,每次执行一次打印一个记录。缓冲区的大小等于一个记录大小
请用记录型信号量机制的wait(S)和signal(S)操作来保证文件的正确打印,并写出同步代码
2.参考答案
答:为了缓冲区设置互斥信号量mutex,设置资源信号量empty和full。
3个信号量的初始值分别为mutex.vlaue = 1,empty.value = 1 ,full.value = 0
pA{
从文件中读一条记录;
wait(empty);
外推(mutex);
将数据写入缓冲区;
signal(mutex);
signal(full);
}
pB{
wait(full);
wait(mutex);
从缓冲区中读一条记录;
signal(mutex);
signal(empty);
打印数据;
}
标签:记录,代码,综合题,信号量,mutex,缓冲区,signal,wait From: https://www.cnblogs.com/saoge/p/18085989