电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

试验8多线程生产者消费者试验

试验8多线程生产者消费者试验_第1页
1/6
试验8多线程生产者消费者试验_第2页
2/6
试验8多线程生产者消费者试验_第3页
3/6
南昌大学实验报告学生姓名:王维学号:02 专业班级:网工 121 班实验类型: □ 验证□ 综合 □ 设计□ 创新实验日期:5/14 实验成绩:一、 实验项目名称实验 8 多线程“生产者消费者”实验二、 实验目的“生产者消费者”问题是一个着名的同时性编程问题的集合。通过学习经典的“生产者消费者”问题的实验,读者可以进一步熟悉Linux 中的多线程编程,并且掌握用信号量处理线程间的同步和互斥问题。三、 实验内容“生产者—消费者”问题描述如下。有一个有限缓冲区和两个线程:生产者和消费者。 他们分别不停地把产品放入缓冲区和从缓冲区中拿走产品。一个生产者在缓冲区满的时候必须等待,一个消费者在缓冲区空的时候也必须等待。 另外,因为缓冲区是临界资源,所以生产者和消费者之间必须互斥执行。它们之间的关系如图1 所示。 1 2 3 ⋯N 生产者消费者图 1 生产者消费者问题描述这里要求使用 有名管道 (将在下一章介绍,可提前了解) 来模拟有限缓冲区,并且使用信号量来解决“生产者—消费者”问题中的同步和互斥问题。四、 实验步骤(1)信号量的考虑。这里使用 3 个信号量,其中两个信号量 avail和 full 分别用于解决生产者和消费者线程之间的同步问题, mutex 是用于这两个线程之间的互斥问题。其中avail表示有界缓冲区中的空单元数,初始值为 N;full 表示有界缓冲区中非空单元数, 初始值为 0;mutex 是互斥信号量, 初始值为 1。(2)画出流程图。本实验流程图如图2 所示。开始建立有名管道打开有名管道初始化三个信号量创建消费者和生产者两个线程P操作( avail )P操作(mutex )读管道V 操作( full )V 操作(mutex )P操作( full )P操作( mutex )写管道V 操作( avail )V操作(mutex )结束生产者线程消费者线程图 2 “生产者—消费者”实验流程图(3)编写代码本实验的代码中采用的有界缓冲区拥有3 个单元,每个单元为5 个字节。为了尽量体现每个信号量的意义,在程序中生产过程和消费过程是随机(采取0~5s 的随机时间间隔)进行的,而且生产者的速度比消费者的速度平均快两倍左右(这种关系可以相反) 。生产者一次生产一个单元的产品(放入“hello ”字符串) ,消费者一次消费一个单元的产品。/**/#include <>#include <>#include <>#include <>#include <>#include <>#include <>#include #define MYFIFO "myfifo" /* 缓冲区有名...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

试验8多线程生产者消费者试验

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部