有A、B两人通过信箱进行辩论,每个人都从自己的信箱中取得对方的问题。将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中。假设A的信箱最多放M个邮件,B的信箱最多放N个邮件。初始时A的信箱中有x个邮件(0<x<M),B的信箱中有y个(0<y<N)。辩论者

admin2015-12-30  22

问题 有A、B两人通过信箱进行辩论,每个人都从自己的信箱中取得对方的问题。将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中。假设A的信箱最多放M个邮件,B的信箱最多放N个邮件。初始时A的信箱中有x个邮件(0<x<M),B的信箱中有y个(0<y<N)。辩论者每取出一个邮件,邮件数减1。A和B两人的操作过程描述如下:
CoBegin

CoEnd
当信箱不为空时,辩论者才能从信箱中取邮件,否则等待。当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。
请添加必要的信号量和P、V(或wait、signal)操作,以实现上述过程的同步。要求写出完整过程,并说明信号量的含义和初值。

选项

答案semaphore Full_A=x,//Full_A表示A的信箱中的邮件数量 semaphore Empty A=M-x;//Empty_A表示A的信箱中还可存放的邮件数量 semaphore Full_B=y;//Full_B表示B的信箱中的邮件数量 semaphore Empty_B=N-y;//Empty_B表示B的信箱中还可存放的邮件数量 semaphore mutex_A=1;//mutex_A用于A的信箱互斥 semaphore mutex_B=1;//mutex_B用于B的信箱互斥 Cobegin [*]

解析
转载请注明原文地址:https://kaotiyun.com/show/roRi777K
0

最新回复(0)