資源簡介
操作系統多線程經典問題,顧客理發師問題。理發師1位,顧客、椅子的數量可以自定義。沒有顧客時:
理發師永遠睡覺
新顧客到來時:
若椅子滿了,新顧客離開
若椅子沒滿,新顧客等待;若理發師工作完,新顧客理發
代碼片段和文件信息
//?BarberAndCustomer.cpp?:?定義控制臺應用程序的入口點。
//
/*
沒有顧客時:
理發師永遠睡覺
新顧客到來時:
若椅子滿了,新顧客離開
若椅子沒滿,新顧客等待;若理發師工作完,新顧客理發
理發師1位,顧客、椅子的數量可以自定義
*/
#include?“stdafx.h“
#include
#include
#include
#include
#include
using?namespace?std;
unsigned?int?waiting;//正在等待的顧客的數量
const?unsigned?int?barber?=?1;//理發師數量
unsigned?int?customer?;//顧客數量
unsigned?int?chair;//椅子數量
unsigned?int?threadnum?;//線程數量
clock_t?t;//時間
HANDLE?semaphoreBarber;//理發師信號
HANDLE?CustomerMutex;//顧客數量控制量
HANDLE?semaphoreCustomer;//顧客信號
HANDLE?Mutex;//操作控制量
HANDLE?Hthread[1000];
HANDLE?first;//先到先得控制量
DWORD?WINAPI?funcCuctomer(LPVOID?pm)
{
WaitForSingleobject(Mutex?INFINITE);
printf(“%d時刻,顧客%d進店\n“?clock()int(pm));
SetEvent(semaphoreCustomer);//觸發顧客
- 上一篇:信息管理系統-C語言版-程序設計
- 下一篇:c語言實現的離散卷積程序
評論
共有 條評論