多生产者和多消费者问题

问题描述

image.png

问题分析

同步关系:

代码实现

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);
}