码迷,mamicode.com
首页 > 其他好文 > 详细

读者与写者、生产者与消费者

时间:2016-07-20 13:47:32      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:消费者   生产者   缓冲区   读者   

1、读者写者

写者:写数据

读者:仅仅是读数据,不存在取走数据

写者与写者关系:互斥

读者与读者关系:没有关系

写者与读者关系:同步、互斥


解决方法:

1)读者优先:读者正在读,写者不能终止读者,直到读者读完,写者才能写入

2)写者优先:写者正在写,读者不能终止写者,直到写者写完,读者才能写入


2、生产者消费者

生产者:产生数据

消费者:取走数据

生产者与生产者:互斥关系

消费者与消费者:互斥关系

生产者与消费者:互斥、同步关系


生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。

要解决该问题,就必须让生产者在缓冲区满时休眠,等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样, 也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。


3、区别

1)数据一直都存在,不存在有空位才能写,有数据才能读的问题,写者写可以覆盖之前的值,读者不会消费数据,数据不会消失。

2)允许多个读者同时并发访问,而消费者却要互斥,写者不仅要和写者之间互斥,还要与读者也互斥,对于生产者/消费者只需与自身互斥。


本文出自 “LOVEMERIGHT” 博客,请务必保留此出处http://lovemeright.blog.51cto.com/10808587/1827955

读者与写者、生产者与消费者

标签:消费者   生产者   缓冲区   读者   

原文地址:http://lovemeright.blog.51cto.com/10808587/1827955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!