H5W3
当前位置:H5W3 > 其他技术问题 > 正文

无缓冲channel中的数据处理不过来会怎样?

假如有两个goroutine,一个负责发送数据,一个负责接收并处理数据,如果处理数据的速度远远比不上发送数据的速度,那么发送数据的goroutine会等待处理数据的goroutine吗?还是说处理不过来的数据会被丢弃?

回答

这个很容易测试吧.

无缓冲 channal 满了,会导致写 channel 等待.直至 channel 里的内容被取出.

无缓冲channel没有什么满了一说

比如两个人传递东西:
无缓冲相当于从发送者手中直接亲手交到接收人收手中,中间无任何传递介质,所以必须双方都准备好了,才可以传递,接收者没有准备好,发送者是没办法发送的,会一直阻塞,至于等待久了,是否丢弃,都是上层业务的处理逻辑问题,跟channel没啥关系

有缓冲,相当于两个人中间有个箱子,一个人放东西进箱子,一个人从箱子中取,缓冲区大小就是箱子的容量。

本文地址:H5W3 » 无缓冲channel中的数据处理不过来会怎样?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址