02设有一缓冲池 P , P 中含有 20 个可用缓冲区,一个输入进程将外部数据读入 P ,另有一个输出进程将 P 中数据取出并输出。若进程每次
与生产者和消费者问题一样,只是empty的初始值设为20即可参考代码:Semaphoreempty=20;//空缓冲区的大小Semaphorefull=0;//有数据的缓冲区的大小Semaphoremutex=1;//互斥信号量intin=0,out=0;Input(){while(true){produceaniteminnextp;//产生一个商品暂存在nextp中wait(empty);wait(mutex);p[in]=nextp;in=(in+1)%20;signal(mutex);signal(full);}}Output(){while(true){wait(full);wait(mutex);nextc=p[out];out=(out+1)%20;signal(mutex);signal(empty);}}
来自:操作系统-线程/进程-进程同步