没有合适的资源?快使用搜索试试~ 我知道了~
基于ARM的多线程应用程序设计.doc
0 下载量 23 浏览量
2023-07-02
17:03:45
上传
评论
收藏 359KB DOC 举报
温馨提示
试读
19页
基于ARM的多线程应用程序设计.doc
资源推荐
资源详情
资源评论
开放性实验报告
题 目: 基于 ARM 的多线程应用程序设计
院系名称: 电气工程学院
专业班级: 自动 1302
学生姓名:
学 号:
指导教师:
成绩:
指导老师签名:
日期:2017.1.6
目 录
1 系统概况 ..........................................................................................................................1
2 完成步骤 ..........................................................................................................................1
2.1 思路分析 ...............................................................................................................1
2.2 结构流程图 ...........................................................................................................2
2.3 重要函数 ...............................................................................................................3
2.3.1 源程序 .........................................................................................................3
2.3.2 函数分析 .....................................................................................................9
3 实验数据 ........................................................................................................................12
3.1 下载和调试截图 ..................................................................................................12
4 结果分析和总结 ............................................................................................................12
设计心得 ............................................................................................................................15
参考文献 ............................................................................................................................16
1
1 系统概况
生产者-消费者问题是一个经典的线程同步问题,该问题最早由 Dijkstra 提出,
用以演示他提出的信号量机制。在同一个线程地址空间内执行的两个线程。生产者
线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程
从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓
冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线
程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被
生产出来。
多个生产/消费者在有界缓冲上操作。它利用 N 个字节的共享内存作为有界循环
缓冲区,利用写一字符模拟放一个产品,利用读一字符模拟消费一个产品。当缓冲
区空时消费者应阻塞睡眠,而当缓冲区满时生产者应当阻塞睡眠。一旦缓冲区中有
空单元,生产者线程就向空单元中入写字符,并报告写的内容和位置。一旦缓冲区中
有未读过的字符,消费者线程就从该单元中读出字符,并报告读取位置。生产者不
能向同一单元中连续写两次以上相同的字符,消费者也不能从同一单元中连续读两
次以上相同的字符。
2 完成步骤
2.1 思路分析
本试验是练习生产者-消费者问题,成性能分析,使理解掌握线程的同步、通信
以及互斥和多线程的安全问题。
一般情况下,解决互斥方法常用信号量和互斥锁,即 semaphore 和 mutex,而解
决这个问题,多采用一个类似资源槽的结构,每个槽位标示了指向资源的指针以及
该槽位的状态,生产者和消费者互斥查询资源槽,判断是否有产品或者有空位可以
生产,然后进行相应的操作。同时,为了告诉生产者或者消费者资源槽的情况,还
要有一个消息传送机制,无论是管道还是线程通信。
为了保证互斥要求,需要定义一个数据结构,这个数据结构包含两个指针,一
个读一个写,同时有一个资源数目量,告诉生产者和消费者是否可以生产或者消费。
剩余18页未读,继续阅读
资源评论
xinkai1688
- 粉丝: 335
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功