‘生产者-消费者’模型与‘读-写者’模型

★生产者-消费者模型

      首先,我们先分析一下生产者与消费者模型:生产者与消费者是模型中不可缺少的2种角色,当然模型中肯定需要一个保存数据的场所,能够将生产者生产的数据进行存储。同时,模型必须要满足生产者产生出数据后,消费者才能够进行使用,即就是消费者必须位于生产者之后,当然生产者生产的数据最多将场所放置满就不能继续生产,下面有简单的图示:


wKiom1ecXAOQ36APAAAYVAe60OU407.png

     当然,如果有多个消费者和多个生产者,生产者与消费者之间的关系是同步的,生产者与生产者之间是互斥的,因为一块空间不能让多个生产者同时进行生产。消费者和消费者之间也是互斥的,也就保证了不能同时进行一块空间中数据的消费。


    生产者是否能够生产取决于还有多少空间,而消费者是否能够消费取决于有多少个数据,生产者开始时有空间,而没有产生数据,所以生产者肯定居于消费者之前。


      例:下面是具体的实现生产者-消费者模型,其中使用链表来存储生产的数据,生产的数据头插入链表,消费者的消费数据进行头删。

wKiom1eca8nRMUAWAACzaVHGuEE503.png

wKioL1ecbMLSw86uAACy-NX6-qg019.png

wKiom1ecbRDDJQDZAAA3dcWYak8603.png

运行结果:

wKiom1ecbZbh08biAABGkmdCZQ8584.png


★读、写者模型

      读、写者模型与生产者消费者模型类似,但是也要不同的地方,多个读者可以共享一块空间中的数据,写者之间是相互斥的,读者和写者之间是互斥的。

      读写锁:也称自旋锁,一个读写锁允许有多个读者进行资源的读取,但是只能够允许一个写者对数据进行操作。


例:

wKioL1ech-CAZrJfAACs_87paq8872.png

wKioL1eciCWQP___AACjw7pj0Ww209.png

wKiom1eciHXjq8GyAAAextwHW3Q444.png

运行结果:

wKiom1eciXKyYVj5AABJi5ZQoPU896.png


本文出自 “无心的执着” 博客,谢绝转载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值