资源简介

理发师问题的描述:一个理发店接待室有n张椅子,工作室有1张椅子;没有顾客时,理发师睡觉;第一个顾客来到时,必须将理发师唤醒;顾客来时如果还有空座的话,他就坐在一个座位上等待;如果顾客来时没有空座位了,他就离开,不理发了;当理发师处理完所有顾客,而又没有新顾客来时,他又开始睡觉。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define  maxn  5

sem_t mutexcustomersbarbers;
int waiting=0;
int chair[maxn];
void * barber(void *arg){
sem_wait(&customers);
sem_wait(&mutex);
waiting--;
int inext;
for(i=0;i<5;i++){
if(chair[i]){
next=chair[i];
chair[i]=0;
break;
}
}
printf(“The barber is cutting %dth customer‘s hair.\n“next);
usleep(10000);
sem_post(&mutex);
sem_post(&barbers);
}
void * customer(void *arg){
sem_wait(&mutex);
if(waiting waiting++;
int i;
for(i=0;i<5;i++){
if(!chair[i]){
chair[i]=1;
break;
}
}
printf(“**************************************************\n“);
printf(“The customer comes and sits at %dth chai

评论

共有 条评论