有3个并发进程R M P 它们共享一个缓冲器B。进程R负责从输入设备读信息 每读出一个记录后将其存放
已帮助 人
有3个并发进程R,M,P,它们共享一个缓冲器B。进程R负责从输入设备读信息,每读出一个记录后将其存放在缓冲器B中。进程M在缓冲器B中加工进程R存入的记录。进程P把加工后的记录打印输出。缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可存放一个新纪录。下面是用P、V操作控制它们并发执行时的程序。请填空。 Semaphore S1=1, S2=S3=0; void R() { int x; while(1) { 从输入设备上读一个数; X=接收的数; _____(1)________; B=X; V(S2); } } void M() { while(1) { _____(2)________; 加工B中的数据; V(S3); } } void P() { while(1) { _____(3)________; Z=B; _____(4)________; 打印Z中的数; } } main() { cobegin{ R(); M(); P(); } }

回答
共1条回复-
Semaphore s1=1,s2=s3=0void R(){int xwhile(1){从输入设备上读一个数;X=接收的数;wait(s1)B=xsignal(s2)}}void M(){while(1){wait(s2)加工B中数据;signal(s3)}}void P(){int zwhile(1)wait(s3)z=Bsignal(s1)打印z中数; }}Main(){R()M()P()}
