全文预览

操作系统课程设计--用多线程同步方法解决睡眠理发师问题

上传者:梦&殇 |  格式:doc  |  页数:20 |  大小:0KB

文档介绍
1;//正在等候顾客的理发师数intwaiting=0;//等候理发的顾客数//理发师线程voidbarber(){while(true)//判断有无顾客{wait(customers);//若无顾客,理发师睡眠wait(mutex);//互斥waiting--;//等候顾客数少一个signal(mutex);//释放临界资源signal(barber);//理发师去为一个顾客理发cut_hair;//正在理发}}//顾客线程voidcustomer(){wait(mutex);//互斥if(waiting<n)//如果有空椅子,则等待{waiting++;//等候顾客数加1signal(mutex);//释放临界资源signal(customers);//如果理发师睡觉,唤醒理发师wait(barber);//理发师在理发,顾客等候get_haircut;//顾客坐下等理发师}elsesignal(mutex);//店里人满了,顾客离开}}2.4开发环境与工具系统平台:LINUX环境实现语言:C语言开发工具:NANO编辑器3数据结构与模块说明3.1数据结构通过分析课程设计要求,定义以下的数据:sem_tmutex,customers,barbers;//designthreesemaphores:mutex,customer,barbersintwaiting=0;//thenumberofwaitingcustomersintchair[5];3.2程序模块说明3.2.1主函数模块主函数流程图如下:3.2.2理发师模块理发师模块函数流程图如下:3.2.3顾客模块顾客模块函数流程图如下:4源程序4.1用户名、源程序名和目标程序名用户名:rj070234源程序名:SleepingBarber.c目标程序名:SleepingBarber主机IP地址:192.168.1.254

收藏

分享

举报
下载此文档