- 24
- 0
- 约5.06千字
- 约 16页
- 2021-03-10 发布于天津
- 举报
专业资料
专业资料
实验二经典的生产者一消费者问题
一、 目的
实现对经典的生产者一消费者问题的模拟,以便更好的理解经典进程同步问题。
二、 实验内容及要求
编制生产者一消费者算法,模拟一个生产者、一个消费者,共享一个缓冲池的情形。
1、 实现对经典的生产者一消费者问题的模拟,以便更好的理解此经典进程同步问题。生产者一消 费者问题是典型的 PV操作问题,假设系统中有一个比较大的缓冲池,生产者的任务是只要缓冲池未满 就可以将生产出的产品放入其中,而消费者的任务是只要缓冲池未空就可以从缓冲池中拿走产品。缓冲 池被占用时,任何进程都不能访问。
2、 每一个生产者都要把自己生产的产品放入缓冲池,每个消费者从缓冲池中取走产品消费。在这 种情况下,生产者消费者进程同步,因为只有通过互通消息才知道是否能存入产品或者取走产品。他们 之间也存在互斥,即生产者消费者必须互斥访问缓冲池,即不能有两个以上的进程同时进行。
三、 生产者和消费者原理分析
在同一个进程地址空间内执行两个线程。 生产者线程生产物品, 然后将物品放置在一个空缓冲区中
供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如 果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放一个空缓冲区。当消费者线程消费物品 时,如果没有满的缓冲区,那么消费者线程将被阻挡,直到新的物品被生产出来。
四、生产者与消费者功能描述:
生产者功能描述:在同一个进程地址空间内执行两个线程。生产者线程生产物品,然后将物品放 置在一个空缓冲区中供消费者线程消费。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产 者线程必须等待消费者线程释放出一个空缓冲区。
消费者功能描述:消费者线程从缓冲区获得物品,然后释放缓冲区,当消费者线程消费物品时, 如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。
五、 实验环境
操作系统环境:Win dows 系统。
编程语言:C#。
六、 生产者与消费者的思路和设计
1、程序流程图
(1)生产者
专业资料
专业资料
专业资料
专业资料
(2)消费者
专业资料
专业资料
专业资料
2、主要程序代码 //初始化变量
private void Form1_Load(object sen der. Even tArgs e)
{
mutex = 1;
//互斥信号量
full = 0;
//缓冲池中满缓冲区的数量
empty =
:5;//
缓冲池中空缓冲区的数量
cou nt1
=0;//
生产的产品数目
i = 0;
lb_mutex.Text = 1;
lb_full.Text = 0;
lb_empty.Text = 5;
}
//消费者从缓冲区中消费一个产品
private void con sumer_Click(object sen der, Even tArgs e)
if (full 0){
if (full 0)
{
if (mutex == 1)
{
mutex = 0;
//消费者已进入互斥临界区
//申请进入临界区
//消费者已进入互斥临界区
lb_mutex.Text = 0;
启动消费者消费缓冲区产品timer_c on sumer.E nabled = true;//
启动消费者消费缓冲区产品
else
{
MessageBox.Show(” 缓冲区被占用,请等待。。。,信息提MessageBoxButtons.OK);
}
}
else
{
MessageBox.Show(” 缓冲区为空,不能消费!,信息提示, MessageBoxButtons.OK);
}
}
//生产者向缓冲区中存入一个产品
private void producer_Click(object sen der, Even tArgs e)
{count1 = count1
{
count1 = count1 + 1;
if (empty 0)
{
if (mutex == 1)
{
mutex = 0;
lb_mutex.Text = 0;
timer1.Start();
//生产一个产品
//有缓冲区可放产品
//申请进入临界区
//生产者已进入临界区
//启动生产者将产品放入缓冲区
else
{ //不能进入临界区
countl = countl - 1;
MessageBox.Show(” 缓冲区被占用,请等待。。。,信息提示, MessageBoxButtons.OK);
}
else
{
MessageBox.Show(” 缓冲区已满!,信息提示, MessageBoxButtons.OK); // 无缓冲区可
放产品
count1 = count1 - 1;
}
}
//生产者
private
您可能关注的文档
- 操作票管理标准1.docx
- 操作手册(企业用户).docx
- 操作手册-财务模块.docx
- 操作手册格式--CS14.docx
- 操作手册固定资产零购.docx
- 操作系统课后答案(参考要点)-方敏版.docx
- 操作系统实验处理机调度C语言实现.docx
- 操作系统原理实验报告.docx
- 插床的设计与分析.docx
- 插画师及作品评析.docx
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 世界多极化课件-2026届高考政治一轮复习.pptx VIP
- 情感纠纷和解协议书.docx VIP
- 《合同变更与解除》课件 —— 深入解析合同法律风险与管控策略.ppt VIP
- 《现代物流学》说课.ppt VIP
- 2024年苏教版五年级(上)期末考试数学试卷(附答案).pdf VIP
- 浙江省杭州市下沙区杭四下沙2024-2025学年高二上学期期末考物理试卷(原卷版+解析版).docx VIP
- 第六课+走进经济全球化课件-2026届高考政治一轮复习统编版选择性必修一当代国际政治与经济.pptx VIP
- 新解读(2025)《HJ_T 400-2007车内挥发性有机物和醛酮类物质采样测定方法》.pptx VIP
- 《深圳市高质量幼儿园过程性质量提升指导手册》知识检测题测试卷附答案.docx
- 物流公司安全管理制度范本.docx VIP
原创力文档

文档评论(0)