- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统-C语⾔实现读者写者问题 (读者优先)
同步互斥问题 - 读者写者问题之读者优先
问题要求:
读者-写者问题的读写操作限制(仅读者优先 写者优先) :
写-写互斥,即不能有两个写者同时进⾏写操作。
读-写互斥,即不能同时有⼀个线程在读,⽽另⼀个线程在写。
读-读允许,即可以有⼀个 多个读者在读。
读者优先的附加限制 :如果⼀个读者申请进⾏读操作时已有另⼀个读者正在进⾏读操作,则该读者可直接开始读操作。
读者优先实现思路 :
读者优先指的是除⾮有写者在写⽂件,否则读者不需要等待。所以可以⽤⼀个整型变量read_count记录当前的读者数 ⽬,⽤于确定是
否需要释放正在等待的写者线程(当read_count=0时,表明所有的读者读完,需要释放写者等待队列中的⼀个写者)。每⼀个读者开始
读⽂件时,必须修改read_count变量。因此需要⼀个互斥对象mutex来实现对全局变量read_count修改时的互斥。
另外,为了实现写-写互斥,需要增加⼀个临界区对象write。当写者发出写请求时,必须申请临界区对象的所有权。通过这种⽅法,也
可以实现读-写互斥,当read_count= 1时(即第⼀个读者到来时),读者线程也必须申请临界区对象的所有权。
当读者拥有临界区的所有权时,写者阻塞在临界区对象write上。当写者拥有临界区的所有权时,第⼀个读者判断
完 “read_count== 1”后阻塞在write上,其余的读者由于等待对read_count的判断,阻塞在mutex上。
实现代码 :
/*
* 读者优先
*/
# include stdio.h
# include stdlib.h
# include time.h
# include sys/types.h
# include pthread.h
# include semaphore.h
# include string.h
# include unistd.h
//semaphores
sem_t wrt, mutex
int readCount
struct data {
int id
int opTime
int lastTime
}
//读者
void* Reader(void* param) {
int id = ((struct data*)param)-id
int lastTime = ((struct data*)param)-lastTime
int opTime = ((struct data*)param)-opTime
sleep(opTime)
printf(Thread %d : waiting to read\n, id)
sem_wait(mutex)
readCount++
if(readCount == 1)
if(readCount == 1)
sem_wait(wrt)
sem_ post(mutex)
printf(Thread %d : start reading\n, id)
/* reading is performed */
sleep(lastTime)
printf(Thread %d : end reading\n, id)
sem_wait(mutex)
readCount--
if(readCount == 0)
sem_ post(wrt)
您可能关注的文档
- 病理生理学名词中英文对照.docx
- 博士面试英语自我介绍.doc
- 博途V14安装教程.pdf
- 博弈论复习题及答案分析-共22页.docx
- 部编版二年级语文下册看拼音写词语.doc
- 部编版六年级语文上册第五单元测试卷及答案.doc
- 部编版三年级下学期语文1-4单元按课文内容填空复习题.docx
- 部编版四年级下册语文期末全册分类复习及答案完美版.doc
- 部编版五年级下册词句段运用练习.docx
- 部编版五年级下册语文看拼音写词语全册.docx
- 2024年度党员干部专题组织生活会个人新四各方面对照检查材料3篇合集.docx
- 2023年民主生活会领导干部个人发言3篇范文.docx
- 第二批主题教育专题组织生活会普通党员个人对照检查材料合集2篇.docx
- 学习以案促改党纪教育专题组织生活会个人对照检查材料两篇.docx
- 党员领导干部2023年民主生活会“六个方面”个人对照检查材料3篇范文.docx
- 党员干部“严守纪律规矩 加强作风建设”组织生活会个人对照检查材料集合篇.docx
- 2024班子防治统计造假专题民主生活会对照检查材料两篇范文.docx
- 2024公司机关党支部教育专题组织生活会个人对照检查材料两篇.docx
- 2023年度专题民主生活会个人对照新6个对照方面检查材料3篇文稿.docx
- 2024第二批主题教育专题组织生活会对照检查材料2篇文本.docx
最近下载
- 部编版小学语文六年级下册第三单元教材解读分析.pptx
- 2025年江苏护理职业学院单招职业技能测试题库及答案参考.docx VIP
- 网络对大学生的影响与对策.doc VIP
- 特殊教育教学设计x.pptx VIP
- 2023年安徽医学高等专科学校单招综合素质考试试题及答案解析.docx
- IPC J-STD-001H 2020 EN 最新英文 版的.pdf
- 韩大元 宪法(第七版)全套课件.pptx
- 上海中心大厦施工组织设计.pdf
- 新疆维吾尔自治区2024年普通高考第一次适应性检测(一模)理科综合试卷(含答案).pdf
- (2025年新版本)人教版七年级数学下册《10.3 实际问题与二元一次方程组》教案..docx VIP
文档评论(0)