生产消费者模式,并不是高并发模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产消费者模式,并不是高并发模式相关的知识,希望对你有一定的参考价值。

我为什么说生产消费者模式,并不是高并发模式?
因为高并发的关键因素是数据分割,不是通信。
生产消费者模式只是一个异步数据通信模式。对并发性能的提高有限。

为什么数据分割对并发性能影响这么大?

首先,我们需要说一说硬件cpu,毕竟软件最后是cpu来执行。
我们的目标是让代码性能尽可能的高。
更详细的表述,就是让代码最大限度的发挥cpu的性能。
现在的电脑、手机都已经全部是多核cpu了。
所以,表述就是让代码最大限度的发挥多核cpu的性能。
最大限度的发挥多核cpu的性能,需要我们尽可能的保证代码的高并行度。
高并行度就是代码尽可能在再多个cpu核心上独立运行,尽可能减少多个cpu核心的之间的同步,也就是减少锁竞争。因为锁竞争会使得代码变成串行执行,会花费大量cpu时间来加锁。

多个核心为什么需要同步?
因为他们需要正确的操作同一个内存块。既完成内存块的操作,又不破坏数据。

下面是具体例子:

微服务

微服务其实隐含着数据分割的思想。

单核到多核的发展

单核进一步提高性能,需要更高的频率,或者单周期执行更多的指令。
更高的频率,受限于功耗墙。
单周期执行更多的指令,使得单个cpu核心的设计变得更加的复杂,难度巨大。

以上是关于生产消费者模式,并不是高并发模式的主要内容,如果未能解决你的问题,请参考以下文章

Java——多线程高并发系列之生产者-消费者模式

java并发编程实战读书笔记4--生产者消费者模式和队列

java并发编程实战读书笔记4--生产者消费者模式和队列

Java并发程序设计设计模式与并发之生产者-消费者模式

go语言中实现生产者-消费者模式有哪些方法呢

多线程-并发编程-生产者消费者模式及非阻塞队列与阻塞队列实现