- 45.(7分)三个进程P₁、P₂、P₃互斥使用一个包含N(N>0)个单元的缓冲区。P₁每次用produce()生成一个正整数并用put()送入缓冲区某一空单元中;P₂每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P₃每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义信号量的含义(要求用伪代码描述)。
解答: 互斥资源: 缓冲区只能互斥访问, 因此设置互斥信号量mutex。 同步问题: 、 因为奇数的放置与取用而同步, 设同步信号量odd; 、 因为偶数的放置与取用而同步, 设置同步信号量even; 、、 因为共享缓冲区, 设同步信号量empty, 初值为N。程序如下: