#define CHARIS 5 //椅子数目
int waitings=0;
-------------------------------------------------
信号量一定要赋初值
-------------------------------------------------
semaphore barber=0,customer=0;
semaphore mutex=1;
void barber()
{
do{
P(customer);
P(mutex);
-------------------------------------------------
mutex是用于互斥访问waiting这个临界资源的
-------------------------------------------------
waiting--;
V(mutex);
cut_hair();
V(barber);
}while(true);
}
void cumstomer()
{
do
{
P(mutex);
if(waiting<CHARIS)
{
waiting++;
V(customers);
V(mutex);
P(baber);
Get_haircut();
}
else
{
V(mutex);
}
}while(true);
}
PV操作——理发师问题|操作系统
最新推荐文章于 2022-12-09 15:27:41 发布