資源簡介
理發師問題的描述:一個理發店接待室有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
- 上一篇:LM迭代優化算法
- 下一篇:華南理工大學操作系統實驗:讀者寫者問題
評論
共有 條評論