玩具批发|龙美网|

玩具批发|龙美网|

当前位置: 玩具批发 > 仿真模型 >

程序设计流程图,多线程编程之:实验内容——“生产者消费者”实验

时间:2019-04-17 19:51来源:未知 作者:玩具批发 点击:
程序设计流程图,玩具批发|龙美网|生产者消费者问题是一个著名的同时性编程问题的集合。通过学习经典的生产者消费者问题的实验,读者可以进一步熟悉 有一个有限缓冲区和两个线程:生产者和消费者。他们分别不停地把产品放入缓冲区和从缓冲区中拿走产品。一个生产者在缓冲区满的时候必须等待,
程序设计流程图

  “生产者消费者”问题是一个著名的同时性编程问题的集合。通过学习经典的“生产者消费者”问题的实验,读者可以进一步熟悉

  有一个有限缓冲区和两个线程:生产者和消费者。他们分别不停地把产品放入缓冲区和从缓冲区中拿走产品。一个生产者在缓冲区满的时候必须等待,一个消费者在缓冲区空的时候也必须等待。另外,因为缓冲区是临界资源,所以生产者和消费者之间必须互斥执行。它们之间的关系如图9.4所示。

  这里要求使用有名管道来模拟有限缓冲区,并且使用信号量来解决“生产者—消费者”问题中的同步和互斥问题。

  这里使用3个信号量,其中两个信号量avail和full分别用于解决生产者和消费者线程之间的同步问题,mutex是用于这两个线程之间的互斥问题。其中avail表示有界缓冲区中的空单元数,初始值为N;full表示有界缓冲区中非空单元数,初始值为0;mutex是互斥信号量,初始值为1。

  本实验的代码中采用的有界缓冲区拥有3个单元,每个单元为5个字节。为了尽量体现每个信号量的意义,在程序中生产过程和消费过程是随机(采取0~5s的随机时间间隔)进行的,而且生产者的速度比消费者的速度平均快两倍左右(这种关系可以相反)。生产者一次生产一个单元的产品(放入“hello”字符串),消费者一次消费一个单元的产品。

  linux操作系统文章专题:linux操作系统详解(linux不再难懂)中国自主品牌博览会开幕 多项高科技成果齐亮相

程序设计流程图玩具批发|龙美网| (责任编辑:玩具批发)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
尚未注册畅言帐号,请到后台注册