没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论































《嵌入式 Linux 编程》
课程设计
题目:多线程实现生产者消费者
之间的通信
班 级: 计算机应用 xxxx 班
学 号: 12 号
姓 名: xx
指导教师: xxx
日 期: 2014.6.23~2014.6.27

目 录
一、课程设计说明 ...........................................1
二、概要设计 ...............................................1
三、模块设计 ...............................................2
四、详细设计 ...............................................4
五、程序调试 ...............................................6
六、总结 ...................................................8
七、参考文献 ...............................................9
八、附录 ..................................................10

一、课程设计说明
生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buff
er)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于
将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当
缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方
法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再
去唤醒它。同样地,当缓冲区已经空了,而消费者还想去取消息,此时也可以让消
费者进行休眠,等待生产者放入一个或者多个数据时再唤醒它。本次课设通过研究
Linux 的进程机制和信号量实现生产者消费者问题的并发控制。
二、概要设计
本作业是完善课件上的线程综合实例的练习生产者-消费者问题,重构这个程
序的框架,完成性能分析,使之进一步理解掌握 Linux 下线程的同步、通信以及互
斥和多线程的安全问题。
一般情况下,解决互斥方法常用信号量和互斥锁,即 semaphore 和 mutex,而
解决这个问题,多采用一个类似资源槽的结构,每个槽位标示了指向资源的指针以
及该槽位的状态,生产者和消费者互斥查询资源槽,判断是否有产品或者有空位可
以生产,然后根据指针进行相应的操作。同时,为了告诉生产者或者消费者资源槽
的情况,还要有一个消息传送机制,无论是管道还是线程通信。
然而,本次试验有几个特殊的要求:
1、循环缓冲。
2、除了 stderr,stdout 等外,只用小于 2 个的互斥锁、
3、放弃资源槽分配机制,采用额外的数据结构。
4、生产者一直持续生产,形成生产消费的良性循环。
首先,使用一个互斥锁,意味着资源槽机制就不能使用了。因为资源槽虽以用
一个互斥锁完成,但是需要有额外的通信,如果使用管道通信,则管道也必须是互
斥,这就不满足 1 个互斥锁的要求。其次,要求生产者一直生产,这就否定了另外
一种方法:消费者、生产者的位置均平等,消费者消费的时候生产者不能生产,生
产者生产的时候消费者不能消费。因此,就需要采用 A 要求,也就是循环链表的形
式。
为了保证互斥要求,需要定义一个数据结构,这个数据结构包含两个指针,一
个读一个写,同时有一个资源数目量,告诉生产者和消费者是否可以生产或者消费。
剩余13页未读,继续阅读
资源评论


Enthralled
- 粉丝: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (2025)手术部位感染的预防与控制、预防性使用抗生素考试试题及答案.docx
- 浅析电厂热控自动化系统运行的稳定性1.docx
- 互联网背景下高校钢琴教学模式的重构策略.docx
- 《信息系统分析与设计》第4章:数据库系统与数据模型.ppt
- PLC矿井通风机监控系统设计方案.doc
- 企业内部审计信息化建设的问题探讨.doc
- 电力二次系统安全防护方案.doc
- 大数据时代资讯类App的发展现状、问题和改进策略.docx
- 基于单片机的智能型金属探测器的方案设计书2.doc
- 基于泛雅网络教学平台的税法线上线下混合教学模式探索.docx
- online-judge-ACM资源
- 软件开发项目的计划的要素、计划编制过程.docx
- ArcGIS中文基础教程.doc
- 计算机应用现状以及发展趋势.docx
- 大数据与人力资源管理.ppt
- java源码包JSP实例源码JAVA开发学习设计参考源代码-Java计算器.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
