时间:2022-09-05 10:01:33来源:网络整理
生产-消费者模型由生产者、消费者和交易场所三部分组成。涉及以下关系:
(1)生产者与生产者的关系:由于生产者的生产都是交易场所,所以生产者之间存在竞争关系,就像超市里的同一种商品。不同的供应商。因此,生产者是互斥,互斥关系需要加锁才能维持正常运行。
(2)消费者和消费者的关系:就像不同的消费者去同一个超市购买同一种产品一样,消费者之间也存在竞争。(无论是生产消费者和消费者之间,他们都需要相同的资源,所以它们之间一定存在竞争)
(3)生产者和消费者的关系:生产者和消费者之间既有同步关系,也有互斥关系。互斥关系之所以存在,是因为无论是生产者还是消费者,两者都有需要面对交易场所,如果生产者和消费者同时在交易场所操作c#生产消费者问题,必然会相互影响,所以两者之间存在互斥关系。 -消费者模型,生产消费者和消费者之间也应该存在同步关系,即根据彼此的情况进行自我调整,否则会出现供大于求的情况,导致冗余问题,或者出现供不应求的情况。供给小于需求,导致饥饿,因此生产者和消费者必须在互斥的基础上保持同步互斥关系一般借助互斥锁实现,同步关系一般借助条件变量实现。
交易场所一般是指内存中的一个缓冲区,具有临时保存数据的功能。
生产-消费者模式的意义:
(1)解耦:对于一个普通的函数来说,是从上到下一步一步运行的,但是到了函数调用的时候,从调用这个函数,传参数到这个函数,然后这个函数返回把运行结果传给主程序,在这个过程中,主程序什么也做不了,只能卡在那里等结果处理完,会浪费很多时间。也就是说,在这一次,数据的发送者(主程序)和数据的处理者(被调用的函数)是紧耦合的。
相比之下,如果使用生产-消费者模型,由于交易场所(缓冲区)的存在,数据生产者(主程序)可以直接将生产的数据放入交易场所。这些数据的具体细节不需要生产者注意,可以继续运行。消费者也是如此,即由于生产-消费者模型的存在,借助缓冲区,生产者和消费者可以解耦,无需相互等待,影响了效率。
(2)支持不均忙:由于缓冲区的存在c#生产消费者问题,即使数据的生产和消耗率不一致,整个模型也可以正常工作。当然缓冲区的大小是有限的,所以生产用户和消费者也应该使用条件变量随时调整自己的工作状态。
声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。
图文推荐
2022-09-05 10:01:33
2022-09-05 08:10:17
2022-09-04 11:01:51
2022-09-04 08:10:17
2022-09-03 12:01:21
2022-09-03 11:01:52
热点排行
精彩文章
2022-09-05 09:02:44
2022-09-04 14:02:05
2022-09-04 10:01:54
2022-09-03 14:01:25
2022-09-03 12:01:55
2022-09-03 11:01:37
热门推荐