和独木桥问题相似,后面更独木桥问题
一、问题描述
一个餐厅提供中国菜、泰国菜以及西班牙菜,顾客可以自己选择要吃哪种菜系。餐厅有如下规定:任一时刻餐厅只提供一种菜系,且按第一个进餐厅的顾客的要求进行提供,选择某菜系的最后一名顾客离开后才可以提供另一种菜系;选择当前菜系的顾客可以立即进入餐厅,餐厅允许多名顾客同时进餐,数量无限制;其他顾客必须等待自己所要的菜系被提供时,才可依次进入餐厅进餐。
请用PV操作描述上述的同步与互斥问题,并给出信号量及初值含义。
二、问题求解
//设置三个数值:1:中国菜,2:泰国菜,3:西班牙菜
int i=1,2,3;
int count_i=0; //当前餐厅内某菜系的人数
semaphore mutex=1; //餐厅互斥提供菜系
semaphore mutex_i=1;//互斥访问count变量
Costumers_i()
{
P(mutex_i);
count-i++;
if(count_i==1)
{
P(mutex);
}
V(mutex_i);
吃饭;
P(mutex_i);
count_i--;
if(count_i==0)
{
V(mutex);
}
V(mutex);
}
原本的答案很长,把每一个都列出来,觉得没有必要,只用用变量代替了。
三、碎碎念
今天太累了,就到这啦~