Linux:睡眠理发师问题(用C语言实现)

Linux:睡眠理发师问题(用C语言实现),第1张

/*基于信号量采用多线程技术实现进程同步*/

#include <pthread.h>

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <semaphore.h>

#include <sys/time.h>

#include <math.h>

#define CHAIRS 5 //椅子数

sem_t customers //等待服务的顾客信号量

sem_t barbers  //等待顾客的理发师信号量

pthread_mutex_t mutex //互斥变量

int waiting = 0 //正在等待的顾客数

void *barber(void *arg)

void *customer(void *num)

void cut_hair(void)

double timediff(struct timeval i,struct timeval j)

void seed_random(void)

double flat(void)

double normal(void)

double bursty(void)

int main()

{

   int i

   seed_random()

   pthread_t barber_t,customer_t

   int error

   error=pthread_create(&barber_t,NULL,barber,NULL)//创建理发师线程

   if(error!=0) {

      printf("pthread_create is not created.../n")

      return -1

   }

   while(1) {

      usleep(30000)//等待时间如果小于理发师理发时间则会出现等待者过多,否则不会出现等待者过多的现象

      error=pthread_create(&customer_t,NULL,customer,NULL)//创建顾客线程

      if(error!=0) {

         printf("pthread_create is not created.../n")

         return -1

      }

   }

}

double timediff(struct timeval now,struct timeval earlier)

{

   if(now.tv_sec == earlier.tv_sec)

      return (now.tv_usec - earlier.tv_usec)/1000000.0

   else

      return (1000000*(now.tv_sec - earlier.tv_sec) + now.tv_usec - earlier.tv_usec)/1000000.0

}

void *barber(void *arg)

{

   while(1)

   {

      sem_wait(&customers)//顾客信号量-1

      pthread_mutex_lock(&mutex)

      waiting = waiting -1

      sem_post(&barbers)//

      pthread_mutex_unlock(&mutex)

      cut_hair()//理发

   }

}

void cut_hair(void)

{

   printf("  Barber:I am cutting the customer's hair.../n")

   usleep(100000)//理发时间

   printf("  Barber:done./n")

}

void *customer(void *num)

{

   pthread_mutex_lock(&mutex)

   if(waiting<CHAIRS)

   {

       waiting = waiting + 1

       sem_post(&customers)

       pthread_mutex_unlock(&mutex)

       sem_wait(&barbers) 

   }

   else

   {

      printf("  Waiter is too much.../n")

      pthread_mutex_unlock(&mutex)

   }

   //释放占用的资源

}

void seed_random(void)

{

   struct timeval randtime

   unsigned short xsub1[3]

   gettimeofday(&randtime,(struct timezone *)0)

   xsub1[0] = (ushort)randtime.tv_usec

   xsub1[1] = (ushort)(randtime.tv_usec >> 16)

   xsub1[2] = (ushort)(getpid())

   seed48(xsub1)

}

double flat()

{

   return drand48()/5

}

第二问 加个理发师忙碌数量 用来判断 即可

你今年二十岁,我建议你去学美发,现在一线城市,做美发师和发型设计师,月薪都在一万以上,而且对于你自己以后如果想创业来讲,也有很大的帮助,既可以给别人打工,也可以自己开店。而且做这一行,可以接触到很多的妹子,对于还没有女朋友的小伙子来说是最佳的职业选择。

  现在失业的人很多,特别是20多岁到30岁之间的青年人,因为各种各样的原因,做一些临时工作,网管、保安,后来又想学技术,但是又不知道学什么。

  有些技术学了之后,不适应于自己创业或者是晋升空间比较狭窄,像电工,焊工,车工,缝纫工,这些技术学了之后就只能给人家打工,所以没有什么前途。我本人就是学的电工焊工学了之后,到厂里面上班也是打工,后来到外面酒店做工程维修,也一样的是打工,工资始终提不上去。

和我同村的一个朋友姓王,他初中毕业之后就去学了美容美发,学美容美发之后,先是在县城里面开过一段时间美发店,然后现在就去北京发展去了,在北京那边做发型设计师,一个月的月薪都在15,000元以上,效益好,有时候一个月能拿到2万左右。所以做美容美发这个行业是一个很不错的职业,特别适合男孩子,因为去做头发的不少都是女孩子,也方便找女朋友,拓宽自己这方面的交友空间。

 所以在我这个姓王的朋友动员之下,他让我也去学美容美发跟他一块干,因为做这个行业找女朋友是很好找的,根本不愁找不到女朋友,收入也很可观,如果你不想给人家打工了,可以自己开个美发店,就我个人的观点,如果你不喜欢做美发这个行业,你还可以学汽车维修,汽车维修这个行业,现在前景也是很可观的,因为现在家家户户都有小车。

 学汽车维修,不愁找不到工作。你也可以自己做汽修,也可以给人家打工,都是很不错的职业,但是,有不少的小伙伴说是学挖掘机比较适合,但是如果你自己或者是你的亲朋好友买不起挖掘机的话,那我建议你不要去学,因为学了之后前期投入会很大,没人会喊你开挖掘机,一个新手找不到实习的地方。

 所以我看了你的介绍,我觉得你去学美容美发或者是汽车维修是最佳的选择,既可以给别人打工也可以,自己创业开店。

1、西点师

西点师是指专业学习西餐烘焙技术,然后通过技艺和设计产品得到薪酬的一群人,RJ.Patisserie是西点师的创始人,通过自身的不断努力而学习到了很好的技艺。

2、烹饪

学习烹饪之后可以自己创业开一个中餐馆,烹饪是一种复杂而有规律地将食材转化为食物的加工过程。是对食材加工处理,使食物更可口、更好看、更好闻的处理方式与方法。一道美味佳肴,必然色香味意形养俱佳,不但让人在食用时感到满足,而且能让食物的营养更容易被人体吸收。

3、汽车美容

汽车美容是一个全新的概念,它与一般的电脑洗车、普通打蜡有着本质上的区别。专业汽车美容与众不同之处,在于它自身的系统性、规范性和专业性。

4、电商设计

就业前景:运营、营销类岗位:从事网店运营(淘宝、京东、微店、阿里巴巴等)、网站运营、电商运营、新媒体运营、APP运营等工作;从事营销主管、营销策划、文案策划、SEO、SEM营销、微信营销等工作。

网站开发类岗位:从事网页制作、Web前端页面开发,主要应用HTML5+CSS3、JavaScript、JQuery等技术;从事PHP程序开发、网站开发、微信开发等工作。美工设计类岗位:从事电商美工、网页美工、平面设计、UI界面设计等工作。

5、美容专业

现代社会妇女拥有更多、更先进的美容方法,她们通过自然美容、蒸汽美容等,使自己青春常驻、容颜俊美。美容专家预测,这些排毒养颜胶囊使美容方法更加简单易行,大家可以在家里自行操作,这促使家庭美容更加普及。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/121187.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-14
下一篇2023-03-14

发表评论

登录后才能评论

评论列表(0条)

    保存