semaphore
empty1=9;// 空 buf1 的数目
full1=2; // 有数据的 buf1 的数目
empty2=5; // 空 buf2 的数目
full1=0; // 有数据的 buf2 的数目
mutex1=mutex2=1; // 互斥信号量
int main(){
Cobegin // 并发开始
GET();
PRO();
PUT();
Coend // 并发结束
return 0; }
//GET 进程
void GET () {
while(1)
{
…
wait(empty1);
wait(mutex1);
将信息送入 buf1;
signal(mutex1);
signal(full1);
…
}
}
//PRO 进程
void PRO () {
while(1)
{
wait(full1);
wait(mutex1);
从 buf1 中取出信息 ;
signal(mutex1);
signal (empty1);
wait(empty2);
wait(mutex2);
将信息送入 buf2;
signal(mutex2);
signal(full2);
}
}
//PUT 进程
void PUT () {
while(1)
{
wait(full2);
wait(mutex2);
从 buf2 中取出信息 ;
signal(mutex2);
signal (empty2);
}