多生产者和多消费者问题
问题描述

问题分析
同步关系:
- 盘子空->父亲放苹果;
- 盘子空->母亲放桔子;
- 盘子是苹果->女儿吃;
- 盘子是桔子->儿子吃;
互斥关系: - 盘子;
代码实现
sem plate = 1;
sem apple = 0;
sem orange = 0;
sem mutex = 1;
void father() {
P(plate);
P(mutex);
...
V(mutex);
V(apple);
}
void mother() {
P(plate);
P(mutex);
...
V(mutex);
V(orange);
}
void son() {
P(orange);
P(mutex);
...
V(mutex);
V(plate);
}
void daughter() {
P(apple);
P(mutex);
...
V(mutex);
V(plate);
}