如何解决带有多余通道的大猩猩 websocket 示例?
在这个简单的例子中,我不明白频道“完成”的原因
https://github.com/gorilla/websocket/blob/master/examples/echo/client.go
通道是结构体类型,使用了3次
- Z41 延迟关闭(完成)
- Z57 案例
- Z77 案例
没有人写入频道。所以 2. 和 3. 会阻塞, 据我所知。我将不胜感激任何解释 这是如何工作的。
解决方法
在调用 close 之后,并且在接收到任何先前发送的值之后,接收操作将在不阻塞的情况下返回通道类型的零值。
在调用 case <-done:
后,close(done)
分支不会阻塞。
使用接近信号完成的通道是很常见的,因为发出信号完成的 goroutine 不需要知道等待完成的 goroutine 的数量。此外,通道关闭永远不会阻塞等待接收器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。