- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3 produ-con
* 实验内容 实验题目 采用多线程技术解决生产者/消费者问题 实验目的 掌握pthread线程编程基本技术 理解线程同步机制 掌握多线程同步控制编程技术 * 生产者/消费者问题—问题描述 也称有界缓冲区问题 多个生产者线程向缓冲区中写数据 多个消费者线程从缓冲区中读取数据 生产者线程和消费者线程必须满足 生产者写入缓冲区的数目不能超过缓冲区容量 消费者读取的数目不能超过生产者写入的数目 * 生产者/消费者问题—PV原语操作 * 生产者/消费者问题—问题分析 缓冲区须被生产者/消费者进程互斥访问 生产者进程 多个并发写进程互斥改变写指针 写入条件:缓冲区非满 消费者进程 多个并发读进程互斥改变读指针 读取条件:缓冲区非空 读写指针设计 初始化时读指针和写指针为0 如果读指针等于写指针,则缓冲区为空 如果(写指针+ 1) % BUFFER_SIZE等于读指针,则缓冲区为满 生产者/消费者问题—问题分析 缓冲区访问结构示意图 关键问题 如何利用线程互斥变量机制定义缓冲区结构 如何利用线程同步通信机制协调生产者/消费者进程通信 解决途径 线程条件变量通信机制 * * 生产者/消费者问题—解题思路 缓冲区结构定义 一个mutex变量:pthread_mutex_t 两个条件变量(控制读写指针):pthread_cond_t 生产者/消费者问题—解题思路 生产者/消费者进程的同步通信协调 * 生产者进程 消费者进程 1、调用pthread_mutex_lock()对lock上锁,并根据以下条件判断缓冲区是否已满; (writepos + 1) % BUFSIZE == readpos 2、若满,调用ptread_cond_wait()进入阻塞,等待notfull条件变量; 3、写入数据并移动写指针writepos; 4、调用pthread_cond_signal()向消费者信号通过notempty条件变量; 5、调用pthread_mutex_unlock()对mutex解锁。 1、调用pthread_mutex_lock()对lock上锁,并根据以下条件判断缓冲区是否为空; writepos == readpos 2、若空,调用ptread_cond_wait()进入阻塞,等待notempty条件变量; 3、读取数据并移动读指针readpos; 4、调用pthread_cond_signal()向消费者信号通过notfull条件变量; 5、调用pthread_mutex_unlock()对mutex解锁。 * 生产者/消费者问题—解决方案 主程序启动生产者/消费者线程 生产者线程顺序地将0 到1000写入循环缓冲区 消费者线程不断地从共享的循环缓冲区读取数据 生产者/消费者问题—关键函数 线程管理相关函数 int?pthread_create( ); int?pthread_join(); 线程互斥控制相关函数 int pthread_mutex_init(); int pthread_mutex_lock(); int pthread_mutex_unlock(); 线程条件变量控制相关函数 int pthread_cond_init(); int pthread_cond_wait(); int pthread_cond_signal(); * * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 生产者/消费者问题—运行 编译、执行 gcc proncons.c –o proncons –lpthread ./proncons 运行结果 *
您可能关注的文档
- 学生在学习生活中践行.doc
- 有机化学、可持续发展及习题.doc
- 600MW和风电标准.doc
- 焙烤工艺流程.doc
- 7-科学思维.ppt
- 操作系统重装后防止中毒技巧.doc
- 529信号与系统2004级A卷.doc
- 5.0.1越狱.doc
- 2008-10月Y2笔试无答案.doc
- 网吧义务巡逻工作计划.doc
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
最近下载
- 2024年高考语文复习:修改病句 专项练习题(含答案解析).pdf VIP
- ISO_9001_2015(英文版,高清原文).pdf
- 2024年全国职业院校技能大赛高职组(烹饪赛项)备赛试题库(含答案).pdf VIP
- 2024年世界职业院校技能大赛中职组“导游服务组”赛项考试题库(含答案).pdf VIP
- 2024年世界职业院校技能大赛高职组“导游服务组”赛项参考试题库(含答案).pdf VIP
- 2024年世界职业院校技能大赛高职组“研学旅行组”赛项参考试题库(含答案).pdf VIP
- 涡喷发动机及其油路结构.pdf VIP
- (一模)临汾市2025年高考考前适应性训练考试(一) 化学试卷(含答案).pdf
- 山西省大同市云冈区重点名校2024届中考冲刺卷数学试题含解析.doc VIP
- 2024年《药物临床试验质量管理规范》(GCP)网络培训题库及答案完整版.pdf VIP
文档评论(0)