Concurrency
如何形象地理解并发
从人的行为角度来看,理解并发最简易的思维就是多个人做同一件事。
第一次思考包含的三个关键点
多个人
动作 (做)
内容 (同一件事)
深入思考,本质上只包含两个点
多个人
动作 (动作的执行已经包含的了执行的内容)
不同角度理解
从行为上看,虽然是多个人,但是动作的逻辑往往是相同的。
从结果上看,期望所要做的事的结果是正确的。
并发的设计思路
从不同角度的理解的结论,一个并发系统的整体设计,一般有两种思路
从行为上,从前到后设计
从结果上,从后到前设计
并发系统并不是一个单一过程,所以最终在设计落地的时候,要结合设计
一些思考
为什么软件开发中会存在并发?并发是为了让资源充分的利用。
行为上从前到后
生产者消费者模式
一边负责生产
一边负责消费
关键点是数据交互的方式
生产者生产的数据如何给到消费者
因此:消费也能分为主动消费,被动消费
主动消费是消费者主动拿到数据。生产者的生产数据和消费者中间存在数据通道
被动消费是消费者提供消费的逻辑。生产者的生产数据后调度分配到消费上
从生产者消费者到 Reactor
netty在Selector上的设计就是一种被动消费的设计
netty在EventLoop上又是一种主动消费的设计
结果上从后到前
分治思想 (fork/join)
例如对一组数据分开计算,合并结果。
正确地累加
AtomicInteger
Go中的思想
不要通过共享内存来通信
要通过通信来共享内存
设计的思考
一个软件系统是整体的,并发系统也是一样的。
整个并发系统设计关注的是过程的正确与高效。
行为上的设计有时候也包含着结果上的设计,因为行为的过程是包含中间结果的。
27 January 2026