资源简介

一个理发店由一个有几张椅子的等待室和一个放有一张理发椅的理发室组成。1. 若没有要理发的顾客,则理发师去睡觉;2. 若一顾客进入理发店,理发师正在为别人理发,且等待室有空椅子,则该顾客就找张椅子按顺序坐下;3. 若一顾客进入理发店,理发师在睡觉,则叫醒理发师为该顾客理发;4. 若一顾客进入理发店且所有椅子都被占用了,则该顾客就离开。

资源截图

代码片段和文件信息

//2007-12-23 10:46:11
      
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define  MAX_CHAIR_NO 50 
#define MAX_CUSTOM_NO 10
#define MAX_BARBER_NO 8

int chair_no=5;
time_t end_time; /**//*end time*/
sem_t mutexcustomersbarbers;
int count = 0;//等待理发的顾客数
void barber(void* arg);
void customer(void* arg);
      
int main(int argc char *argv[])
{
int i=0;
int custom_no=1;
int barber_no=1;
int interval=20;
pthread_t barber_id[MAX_BARBER_NO];
pthread_t custom_id[MAX_CUSTOM_NO];
int ret = 0;

if(argc==1){

    }else if(argc==2){
if(strcmp(argv[1]“-h“)||(strcmp(argv[1]“-H“))){
printf(“usage: param: barber_no cust_no interval chair_no\n“);
exit(0);
}
custom_no=atoi(argv[1]);
}else if(argc==3){
barber_no=atoi(argv[1]);
custom_no=atoi(argv[2]);
}else if(argc==4){
barber_no=atoi(argv[1]);
custom_no=atoi(argv[2]);
interval=atoi(argv[3]);
}else if(argc==5){
barber_no=atoi(argv[1]);
custom_no=atoi(argv[2]);
interval=atoi(argv[3]);
chair_no=atoi(argv[4]);
}
if(barber_no>MAX_BARBER_NO) barber_no=MAX_BARBER_NO;
if(custom_no>MAX_CUSTOM_NO) custom_no=MAX_CUSTOM_NO;
if(chair_no>MAX_CHAIR_NO) chair_no=MAX_CHAIR_NO;

printf(“barber no: %d customer no: %d interval(s) %d chair no: %d\n“
barber_nocustom_nointervalchair_no);

end_time = time(NULL)+interval;
  

评论

共有 条评论