#include
#include
#include
#include
#include
#define max_count 10//最多理髮人數
#define chairs 4//店中椅子的總數目
using namespace std;
intwaiting=0; //等待理髮的顧客人數
char close_door; //關門
int count=0; //顧客的序號
int finish=0; //已經理完發的顧客人數
handle mutex =createmutex(null, false, "mutex"); //用來實現程序的互斥
handle barbers =createsemaphore(null, 1,1, "barbers"); //定義訊號量來進行執行緒間的同步
handle customers =createsemaphore(null,0,chairs,"customers"); //定義訊號量來進行執行緒間的同步
int random()//定義隨機函式來產生顧客,並使兩個顧客間的時間少於10秒
dword winapi customer(lpvoid pparm2)// 顧客執行緒
else
cout<<"沒有顧客在理髮,我馬上為您服務^_^"resumethread(customers);//喚醒理髮師程序
releasemutex(mutex);//釋放互斥量,以便其他執行緒使用
waitforsingleobject(barbers,infinite); //等待理髮
}else
return 0;
}dword winapi barber(lpvoid pparm1)//理髮師執行緒
return 0;
}int main( )//實現執行緒的操作
cout<<"已經為">close_door;
if (close_door=='y')
else
}hthreadcustomer=createthread(null,0,customer,null,0,null);
}return 0;
}
睡眠理髮師問題
一 問題描述 經典理髮師問題 假設後街有家理髮店,店裡有乙個理髮師 一把理髮椅和n把等候理髮的顧客椅子。1 如果沒有顧客則理髮師便在理髮椅上看報紙 2 當有乙個顧客到達時,首先檢視理髮師在幹什麼,如果在看報紙則告訴理髮師理髮,然後坐到理髮椅上開始理髮 如果理髮師正在理髮,則檢視是否有空的椅子可坐,如...
理髮師悖論
由著名數學家 伯特蘭 羅素 bertrand a.w.russell,1872 1970 提出的悖論與之相似 在某個城市中有一位理髮師,他的廣告詞是這樣寫的 本人的理髮技藝十分高超,譽滿全城。我將為本城所有不給自己刮臉的人刮臉,我也只給這些人刮臉。我對各位表示熱誠歡迎!來找他刮臉的人絡繹不絕,自然都...
理髮師問題c 作業系統
這是關於理髮師問題的c 程式,如果對其中函式有不理解的可以看我另一篇部落格程序相關函式彙總解釋,對照著看,可能方便你理解 include include include using namespace std define chairs 5 椅子數目 define max count 10 顧客最多...