全球旧事资料 分类
中南大学
UNIXLINUX
实验报告
学学姓院:_信息科学与工程学院____号:090909名:
专业班级:计算机科学与技术09班
指导教师:沈海澜
2012年5月
f生产者消费者同步问题
1.实验目的
(1)全面理解生产者与消费者问题模型,掌握解决该问题的算法思想,正确使用同步机制。(2)学习使用Li
ux线程同步机制解决互斥和同步问题。
2.实验环境
已安装Li
ux操作系统的微机一台
3.实验内容
问题描述:一组生产者向一组消费者提供消息,它们共享一个有界缓冲池,生产者向其中投放消息,消费者从中取得消息。假定这些生产者和消费者互相等效,只要缓冲池未满,生产者可将消息送入缓冲池;只要缓冲池未空,消费者可从缓冲池取走一个消息。功能要求:根据进程同步机制,编写一个解决上述问题的程序,可显示缓冲池状态、放数据、取数据等过程。生产者功能描述在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。消费者功能描述消费者线程从缓冲区中获得物品,然后释放缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。程序结构图:
4.具体设计要求及有关说明
A、主函数
fMai
函数开始
初始化公共数据区
初始化信号量
创建生产者进程Y创建消费者进程Y定时到Y退出创建统计进程N
成功
成功
成功NN
B、统计线程
进程开始
定时到?N时间1秒
Y
修改退出标记
清屏
打印消费生产情况
进程结束
C、生产者线程
f进程开始
要求加锁N
要求退出?N
Y
进程结束
加锁成功?Y
要求加锁增加资源数目N加锁成功?解锁Y检查资源数目N是否有空位Y设置取得成功失败计数器1N设置取得失败
解锁
取得成功?Y生产数据
D、消费者线程
f进程开始
要求加锁N
要求退出?N要求加锁
Y
进程结束
加锁成功?
YN加锁成功?解锁Y检查资源数目
N
有产品Y设置取得成功
N
设置取得失败
失败计数器1
减少资源数目
解锁
取得成功?Y消费数据
(1)有2个生产者线程,分别为P1、P2;有2个消费者进程,分别是C1、C2;缓冲区单元个数N15;(2)不同的生产者可生产不同的产品(比如字母、数字、符号);不同的消费者可有不同的消费方式(比如“显示”、“打印”、“拼接成字符串”、“改变大小写”等)。自己可任意定义。(3)使用Li
ux线程r
好听全球资料 返回顶部