首页 > 其他 > 详细

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

时间:2016-07-20 13:44:36      阅读:205      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!