小编典典

什么是通道缓冲区大小?

go

c := make(chan int, 10)         // channel with a buffer size of 10

缓冲区大小为 10 是什么意思?缓冲区大小具体代表/限制什么?


阅读 257

收藏
2021-12-06

共1个答案

小编典典

缓冲区大小是可以在没有发送阻塞的情况下发送到通道的元素数。默认情况下,通道的缓冲区大小为 0(您可以通过 获得make(chan int))。这意味着每次发送都会阻塞,直到另一个 goroutine 从通道接收。缓冲区大小为 1 的通道可以容纳 1 个元素直到发送块,所以你会得到

c := make(chan int, 1)
c <- 1 // doesn't block
c <- 2 // blocks until another goroutine receives from the channel
2021-12-06