• 无缓冲channel

无缓冲channel是一种同步的管道,数据发送方在发送数据到管道之后,会一直等待数据接收方拿到数据为止。类似美团骑手送外卖,必须将餐品送到顾客手中,这一单才结束,在顾客来取餐之前,外卖员只能一直在门口等待。

当channel为空时,数据接收方从channel获取数据同样会阻塞。

  • 有缓冲channel

有缓冲channel是异步的管道,并且是有容量的,在channel中的数据达到容量上限之前,数据发送方可以一直往管道中发送数据而不需要等待数据接收方获取,当channel容量满了之后,数据发送方才会一直等待到channel中有容量后(也就是接收方从channel中取出了一个元素,让容量不再满)继续往channel中发送数据。类似美团骑手将外卖放入美团外卖柜,顾客从外卖柜中获取餐品,骑手不需要等待顾客,除非外卖柜满了。

当channel为空时,数据接收方从channel获取数据同样会阻塞。


oh yeah