应用题

有两个并发进程:Read和Print,它们共享可以存放一个数的缓冲区。进程Read每次从磁盘读入一个数存放到缓冲区中,供进程Print打印输出,当缓冲区满时,不允许再向缓冲区中存放数据;当缓冲区空时,不允许再从缓冲区中取出数据打印输出。试用PV操作实现两个进程的协调运行。

【正确答案】

begin
     empty. tull:semaphore; 
     empty=1 : 
     full=0: 
     Cobegin 
          Read( ); 
          Print( ) ; 
     Coend
end
process Read( )
     begin
          L1:从磁盘上读入一个数; 
          ​​​​​​P(empty); 
          将数存放到缓冲区中: 
          V(full); 
          goto L1
      end
process Print( )
     ​​​​​​begin
          L2:P(ftill); 
          将缓冲区中的数取出; 
          V(empty); 
          打印输出; 
          goto L2
     end

【答案解析】