go - 什么是 channel 缓冲区大小?

标签 go channel

我正在尝试创建一个异步 channel ,我一直在查看 http://golang.org/ref/spec#Making_slices_maps_and_channels .

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

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

最佳答案

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

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

关于go - 什么是 channel 缓冲区大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11943841/

相关文章:

go - 如何实现对无缓冲 channel 的非阻塞写入?

go - 将 Jenkins Freestyle Golang 作业转换为 Jenkinsfile

java - 请帮助我理解 Java 中的 Pusher websocket API

反射式没有方法

postgresql - 在 GoLang 中将图像转换为 Base64

go - 为什么这会导致死锁?

javascript - channel 网址

go - 如何同时收听两个 Golang channel ?

go - 为什么我的 golang 程序创建了这么多线程?

function - 戈朗 : custom template function "capture"