高效I/O并发处理:双缓冲和Exchanger
高效I/O并发处理:双缓冲和Exchanger
双缓冲(double buffering)是高效处理I/O操作的一种并发技术,它使用两个buffer,一个goroutine使用其中一个buffer进行写,而另一个goroutine使用另一个buffer进行读,然后进行交换。这样两个goroutine可能并发的执行,减少它们之间的等待和阻塞。 本文还提供了一个类似Java的java.util.concurrent.Exchanger的Go并发原语
https://colobu.com/2024/01/14/double-buffering-and-Exchanger/
有点意思,另外,可能出现读写性能不平衡的情况,一般都是负责读并处理的一方,应该可以读取后并发处理来提高消费速度
有点意思,另外,可能出现读写性能不平衡的情况,一般都是负责读并处理的一方,应该可以读取后并发处理来提高消费速度
嗯,后面的处理可以采用 Reactor 模式, 一个消费者负责读取,然后交给多个worker异步的处理。
本质还是空间换时间,利用读和写两类操作的差异作为划分依据。 和只使用一块区域(同时存读和写数据,以一个下标划分两块数据)相比,可以对整块读或写区域做操作了。
抱歉,我有一点没懂,使用双 buffer 代替 单个 goroutine,那为什么不使用 channel 呢?