go - 在 Go 中发布 channel

标签 go channel

我有一个 TCP 套接字和 2 个 goroutines 读取和写入流。 我正在编写一个从 channel 读取数据的 goroutine。 如果 TCP 连接断开,则从 go 例程中读取将检测到错误并停止。

但是我如何释放一个有 goroutine 写入的 channel ?

是否有像 chan.release() 这样的方法,或者我应该发布一个特殊的数据包来告诉 goroutine 结束?

最佳答案

close(ch)将关闭 channel 。

如果您在 channel 上进行测距,则 for 循环将在 channel 关闭时退出。 val, ok := <-ch允许您检查关闭的 channel 。 ok 将是一个 bool 值,如果 ch 关闭则为 false 如果 ch 打开则为 true。

关于go - 在 Go 中发布 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837970/

相关文章:

conda - 安装 python-pdfkit 在 channel 中找不到

golang 从 net.TCPConn 中以 4 个字节作为消息分隔读取字节

go - 这个 mmap 系统调用有什么问题?

java - 如何控制 MIDI channel 的音量

go - 这是进行并行编程的更好方法吗?

go - 一个 channel 操作是否影响另一个 channel 操作

select - 从 Go channel 获取值(value)

json - 如何解码mongodb数据以构造

sql - 如何在go lang中从数据库中获取数据

angular - 405 Method Not Allowed and "CORS header ‘Access-Control-Allow-Origin’ missing“虽然tcpdump说它正在被发送出去