二、综合应用题
45.(7 分)三个进程 P1、P2、P3 互斥使用一个包含 N(N>0)个单元的缓冲区。P1 每次用
produce()生成一个正整数并用 put()送入缓冲区某一空单元中;P2 每次用 getodd()从该
缓冲区中取出一个奇数并用 countodd()统计奇数个数;P3 每次用 geteven()从该缓冲区中
取出一个偶数并用 counteven()统计偶数个数。请用信号量机制实现这三个进程的同步
与互斥活动,并说明所定义信号量的含义。要求用伪代码描述。
答案要点:
定义信号量 s1 控制 P1 与 P2 之间的同步;S2 控制 P1 与 P3 之间的同步;empty 控制生
产者与消费者之间的同步;mutex 控制进程间互斥使用缓冲区。程序如下:
semaphore s1=0, s2=0, empty=N, mutex=1;
1