資源簡(jiǎn)介
操作系統(tǒng)多線程經(jīng)典問(wèn)題,顧客理發(fā)師問(wèn)題。理發(fā)師1位,顧客、椅子的數(shù)量可以自定義。沒(méi)有顧客時(shí):
理發(fā)師永遠(yuǎn)睡覺(jué)
新顧客到來(lái)時(shí):
若椅子滿了,新顧客離開(kāi)
若椅子沒(méi)滿,新顧客等待;若理發(fā)師工作完,新顧客理發(fā)
代碼片段和文件信息
//?BarberAndCustomer.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
/*
沒(méi)有顧客時(shí):
理發(fā)師永遠(yuǎn)睡覺(jué)
新顧客到來(lái)時(shí):
若椅子滿了,新顧客離開(kāi)
若椅子沒(méi)滿,新顧客等待;若理發(fā)師工作完,新顧客理發(fā)
理發(fā)師1位,顧客、椅子的數(shù)量可以自定義
*/
#include?“stdafx.h“
#include
#include
#include
#include
#include
using?namespace?std;
unsigned?int?waiting;//正在等待的顧客的數(shù)量
const?unsigned?int?barber?=?1;//理發(fā)師數(shù)量
unsigned?int?customer?;//顧客數(shù)量
unsigned?int?chair;//椅子數(shù)量
unsigned?int?threadnum?;//線程數(shù)量
clock_t?t;//時(shí)間
HANDLE?semaphoreBarber;//理發(fā)師信號(hào)
HANDLE?CustomerMutex;//顧客數(shù)量控制量
HANDLE?semaphoreCustomer;//顧客信號(hào)
HANDLE?Mutex;//操作控制量
HANDLE?Hthread[1000];
HANDLE?first;//先到先得控制量
DWORD?WINAPI?funcCuctomer(LPVOID?pm)
{
WaitForSingleobject(Mutex?INFINITE);
printf(“%d時(shí)刻,顧客%d進(jìn)店\n“?clock()int(pm));
SetEvent(semaphoreCustomer);//觸發(fā)顧客
評(píng)論
共有 條評(píng)論