有人可以向我解释这些场景中的频道是如何运作的:
如果某个频道未缓冲,如果您在尚未收到任何消息的情况下向频道发送2条消息,是否只会阻止该应用?
如果有缓冲区,一旦达到缓冲量,它的行为就像#1一样?因此,如果缓冲区是2,那么在2条消息之后它将一直阻塞,直到你收到至少1条消息?
由于你必须设置缓冲量,你不能只有一个存储任意数量消息的频道吗?
答案 0 :(得分:2)
详细介绍in the Go tour。
基本上,每当例程发送一个通道时,该例程就会阻塞,直到某些可用于接收它。这可能是通道缓冲区,或者可能是尝试从通道接收的东西。同样,每当例程在一个通道上接收时,该例程就会阻塞,直到它有东西要接收为止。