• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-01-04
  • 语言: C/C++
  • 标签: 多线程  

资源简介

操作系统多线程经典问题,顾客理发师问题。理发师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);//触发顾客

评论

共有 条评论