- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案
精彩文档
成 绩:
武汉华夏理工学院信息工程学院
课 程 设 计
题 目
用多线程同步方法解决读者阅览问题
系 别
信息工程系
专 业
软件工程
班 级
软件1151
姓名/学号
指导教师
杨铭熙
年
月
日
目 录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc484772946 1.设计目的与要求 PAGEREF _Toc484772946 \h 1
HYPERLINK \l _Toc484772947 1.1设计目的 PAGEREF _Toc484772947 \h 1
HYPERLINK \l _Toc484772948 1.2设计要求 PAGEREF _Toc484772948 \h 1
HYPERLINK \l _Toc484772949 2.设计思想及系统平台 PAGEREF _Toc484772949 \h 1
HYPERLINK \l _Toc484772950 2.1设计思想 PAGEREF _Toc484772950 \h 1
HYPERLINK \l _Toc484772951 2.2系统平台及使用语言 PAGEREF _Toc484772951 \h 1
HYPERLINK \l _Toc484772952 3.详细算法描述 PAGEREF _Toc484772952 \h 2
HYPERLINK \l _Toc484772953 4.源程序清单 PAGEREF _Toc484772953 \h 4
HYPERLINK \l _Toc484772954 5.运行结果与运行情况 PAGEREF _Toc484772954 \h 7
HYPERLINK \l _Toc484772955 6.调试过程 PAGEREF _Toc484772955 \h 9
HYPERLINK \l _Toc484772956 7.总结 PAGEREF _Toc484772956 \h 10
HYPERLINK \l _Toc484772957 本科生课程设计成绩评定表 PAGEREF _Toc484772957 \h 11
精彩文档
正 文
1.设计目的与要求
1.1设计目的
通过研究linux多线程同步的问题,掌握对信号灯的操作方法,以及加深理解同步算法的思想。
1.2设计要求
用多线程同步解决读者阅览问题。设阅览室有5把椅子,几把椅子可用连续存储单元。
要求:
1) 每个读者进入阅览室后,即时显示“Entered” 及其线程自定义标识,还同时显示阅览室共有几名顾客及其所坐的位置。
2) 至少有10个读者,每人阅览至少3秒钟。
3) 多个读者须共享操作函数代码。
2.设计思想及系统平台
2.1设计思想
进程是指在系统中运行的一个应用程序,线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个进程,通常将线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。从而理解到我的课程设计所需要的进程数和线程在我的程序中怎么用。首先座位是一个共享资源,而且有一个数量限制,这里就要用到互斥信号灯的操作和判断资源数量的信号灯。在算法上要认真仔细思考,弄清逻辑顺序,避免错误使用信号灯而带来的死锁。
2.2系统平台及使用语言
本次课程设计是在linux的系统平台下使用C语言实现对读者阅览问题的编程,所使用的工具有gedit编辑器、gcc编译器等。
3.详细算法描述
reader函数:
第一步:定义一个长度为5的整型数组buffer用来模拟连续的五个座位,一个座位资源信号灯sem_sit,一个互斥信号灯sem_mutual。
第二步:创建void* reader(int n)读者的函数,在函数的开始,使用sem_wait(sem_sit)判断是否有空的座位,如果有再使用sem_wait(sem_mutual)互斥信号灯实现上锁,来避免发生与时间相关的错误。
第三步:再是读者注册,用for循环遍历座位数组buffer,来寻找一个空的座位。
第四步:读者找到空座位坐下,使用sem_post(sem_mutual)释放互斥锁。读者reading4秒。
第五步:再使用互斥信号灯,用for信号灯打印现在的座位的入座情况。
第六步:打印完毕后,读者注销,释放座位,然后释放互斥锁,释放座位。
main函数:
第一步:定义pthread_t[10],用来储存reader进程的进程标识。
第二步:初始化sem_sit信号
您可能关注的文档
最近下载
- 全国计算机等级考试教程二级WPS Office高级应用与设计:为演示文稿添加效果PPT教学课件.pptx VIP
- 2023中国铁建股份有限公司所属单位岗位合集笔试备考题库及答案解析.docx VIP
- 中职物理考试题及答案.doc VIP
- DB21∕T 2449-2015 地理标志产品 西丰柞蚕丝.docx VIP
- 《居住空间设计》中级-多选230题(答案版).pdf VIP
- 智慧树 知到 大学生劳动就业法律问题解读(2024最新版) 章节测试答案.docx VIP
- 2025年菊花种植市场调查报告.docx
- 事业单位考试马克思主义哲学试题300道.pdf VIP
- 外墙保温及涂料施工方案样本.doc VIP
- 施工升降机基础及附着施工方案.docx VIP
文档评论(0)