带有多余通道的大猩猩 websocket 示例?

我不明白频道“完成”的原因,在这个简单的例子中

https://github.com/gorilla/websocket/blob/master/examples/echo/client.go

通道是结构类型,使用了 3 次

  1. Z41 延迟关闭(完成)

  2. Z57 案例 <-完成:

  3. Z77 案例 <-完成:

没有人写入频道。所以 2. 和 3. 会阻塞,据我所知。我将不胜感激任何解释这是如何工作的。


宝慕林4294392
浏览 106回答 1
1回答

慕勒3428872

规范说:在调用 close 之后,并且在接收到任何先前发送的值之后,接收操作将返回通道类型的零值而不会阻塞。调用case <-done:后分支不会阻塞。close(done)通常使用接近信号完成的通道,因为发出完成信号的 goroutine 不需要知道等待完成的 goroutine 的数量。此外,通道关闭永远不会阻塞等待接收者。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go