我从这个问题“ Golang - 什么是通道缓冲区大小? ”中了解到,如果通道被缓冲,它就不会阻塞。
c := make(chan int, 1)
c <- data1 // doesn't block
c <- data2 // blocks until another goroutine receives from the channel
c <- data3
c <- data4
但我不明白它有什么用。假设我有 2 个 goroutine,第一个将接收 data1,第二个接收 data2,然后它将阻塞,直到任何子例程可以自由处理 data3。
我不明白这有什么区别?如果没有缓冲区,它会以相同的方式执行。你能解释一下缓冲有用的可能场景吗?
慕容森
相关分类