资源简介
理发师问题的描述:一个理发店接待室有n张椅子,工作室有1张椅子;没有顾客时,理发师睡觉;第一个顾客来到时,必须将理发师唤醒;顾客来时如果还有空座的话,他就坐在一个座位上等待;如果顾客来时没有空座位了,他就离开,不理发了;当理发师处理完所有顾客,而又没有新顾客来时,他又开始睡觉。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
static int seatNumber=30;
int seatChair=0; //waiting customs
int flag=0;
queue guestQueue;
int mutex=1;
void down(int *x)
{
while(true)
if(*x>0)
{
*x=0;
break;
}
}
void up(int *x)
{
*x=*x+1;
}
void *thread(void *ptr)
{
while(true)
{
flag++;
down(&mutex);
if(seatNumber>0)
{
seatNumber--;
guestQueue.push(flag);
printf(“gest comming: %d-----seatNumber:%d \n“flagseatNumber);
}
else
{
printf(“gest gone-----%d-----seatNumber:%d \n“flagseatNumber);
}
up(&mutex);
if(guestQueue.size()>20)sleep(1);
}
}
int main(void)
{
pthread_t id;
int ret;
ret=pthread_create(&idNULLthreadNULL);
if(ret!=0){
printf (“Create pthread error!\n“);
exit (1);
}else{
printf (“Create pthread success!\n“);
while(true)
{
if(guestQueue.size()<10)sleep(1);
down(&mutex);
int guestFlag
相关资源
- Linux c语言 学生成绩管理系统
- ftp工具代码
- Linux开发工具手册
- 多线程串口通讯
- Linux操作系统下C语言编程从零开始
- 基于Linux下C语言开发的员工管理系统
- 超级玛丽c++源码win32Linux平台
- Win32多线程程序设计--详细书签版
- UNIX/LINUX下C语言中文短信UCS2编码和解
- 嵌入式工程师必知必会 (完整高清中
- linux-2.6.24.rar
- C++操作系统课设-进程管理
- Linux下C语言操作静态ARP表,包括增加
- 模拟进程管理c语言至少要有:创建新
- c语言 linux 贪吃蛇.doc
- QT实现视音频实时传输qml+C++
- Linux多线程服务端编程:使用muduo C+
- libstdc++.so.6.0.23_linux7
- 操作系统进程管理实验
- libstdc++-devel-4.1.2-48.el5.x86_64
- C++版仿Linux文件管理系统
- 基于SDL的贪吃蛇游戏
- TCP实现服务器和多客户端通信
- MultiThread(VS2013 MFC多线程-含源码-含个
- C++检测托盘图标和枚举进程2免费
- 链表栈的基本操作(C语言
- C++编写的多线程C/S模式仿QQ软件
- 基于linux C/C++和Qt的聊天程序
- 多线程
- C++ Concurrency in Action 2nd edition235206
评论
共有 条评论