有两个并发进程: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