睡眠理发师课程设计(含有源代码).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

课程设计说明书

〔操作系统〕

题目:睡眠理发师问题

院系:计算机科学与工程

专业班级:电子仪器12-2班

学号:2012303231

学生姓名:方韬

指导教师:王军号

2014年12月23日

安徽理工大学课程设计〔论文〕任务书

计算机科学与工程学院

学号

2012303231

学生姓名

方韬

专业〔班级〕

电子仪器12-2

设计题目

睡眠理发师问题

考虑一个理发店,只有一个理发师,只有n张可供顾客等待理发的椅子,如果没有顾客,那么理发师睡觉;如果有一顾客进入理发店发现理发师在睡觉,那么把他叫醒,写一个程序协调理发师和顾客之间的关系。通过研究Linux的线程机制和信号量实现睡眠理发师问题〔Sleeping-BarberProblem)的并发控制,用多线程同步方法解决睡眠理发师问题〔Sleeping-BarberProblem)。

1、每个顾客进入理发室后,即时显示“Entered”及其线程标识,还同时显示理发室共有几名顾客及其所坐的位置。

2、至少有10个顾客,每人理发至少3秒钟。

3、在完成电子设计后,要求写一份详细的设计报告。

编写代码不少于200行;

程设计说明书不少于15页。

第一周:整体分析,查阅资料;

第二周:总结出大概设计思路;

第三周:着手实现,写好相应的代码;

第四周:系统调试,完善系统程序。

《计算机操作系统》教材

《软件工程》

《C使用手册》

指导教师签字

系主任签字

2014年12月23日

学生姓名:方韬学号:2012303231专业班级:电子仪器12-2

课程设计题目:睡眠理发师问题

指导教师评语:

成绩:

指导教师:

年月日

安徽理工大学课程设计〔论文〕成绩评定表

目录

TOC\o1-3\h\z\u一.课程设计要求1

二.课程设计目的1

三.设计思想说明1

四.课程设计内容1

4.1头文件声明1

4.2定义各种变量2

4.3信号量的定义2

4.4相关函数及线程的定义2

五.数据结构说明2

六.程序用到的系统调用〔API〕3

七.程序总体算法流程图4

八.程序运行5

九.源代码7

十.总结10

参考文献11

一.课程设计要求

有一个理发师,一把理发椅和n把提供应等候理发的顾客座的椅子。如果没有顾客,那么理发师便在理发椅子上睡觉;当第一个顾客到来时,必须唤醒该理发师进行理发;如果理发师正在理发时又有顾客到来,那么如果有空椅子可坐,他就坐下来等待,如果没有空椅子,他就离开理发店。

为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件,试用P、V操作实现。

二.课程设计目的

通过本次课程设计,能深入彻底的弄清楚睡眠理发师问题,能够举一反三,遇到同样的问题能够很快解决。通过自己的实际操作,认真分析,理解进程,线程,信号量之间的关系和他们的实现过程,掌握一些根本的系统调用的用法及其所实现的功能。用C++来实现睡眠理发师的课程设计,到达复习C++相关知识的目的。

三.设计思想说明

此题可看作是n个生产者和1个消费者问题。

顾客作为生产者,每到来一个就使计数器count增加1,以便让理发师理发〔相当于消费〕至最后一个顾客〔相当于产品〕。并且,第1个到来的顾客应负责唤醒理发师;如果不是第1个到达的顾客,那么在有空椅子的情况下坐下等待,否那么离开理发店〔该消息可由计数器count获得〕。主要有以下一些函数来实现整个问题的实现过程:

〔1〕用随机函数random()来产生进入理发店的顾客。

〔2〕定义理发师的理发函数cuthair()用来实现理发操作。

〔3〕定义顾客被理发的函数gethaircut()用来实现顾客被理发的操作。

〔4〕用顾客线程customer实现对顾客行为的控制。

〔5〕用理发师线程barber实现对理发师行为的控制。

〔6〕定义主函数main实现对两个线程的控制和执行操作。

四.课程设计内容

4.1头文件声明

#includestdafx.h

#includewindows.h

#includeiostre

文档评论(0)

199****4744 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档