使用长度为零的缓冲通道

Max*_*lte 3 channel go

我想知道为什么该语言中存在长度为零的缓冲通道。根据我的经验,它们似乎只会造成僵局。有什么用处吗?

MTC*_*ter 6

这个答案(强调我的):

\n\n
\n

默认情况下,通道的缓冲区大小为 0(可以使用 获得make(chan int))。这意味着每个发送都会阻塞,直到另一个 goroutine 从通道接收到数据

\n
\n\n

如果您收到死锁,则可能没有从通道读取任何内容,或者某些内容的写入速度比您读取的速度快。

\n