Kav*_*ian 4 parallel-processing concurrency tcp go
我正在使用 Go 开发 TCP 服务器。现在我想通知所有与客户端交谈的 goroutine 放弃他们的连接,转储他们所拥有的并停止。
关闭频道是一种通知所有人的方式。
问题是:这是惯用的 Go 语言吗?如果我错了;那么我应该怎么做(通知所有的 goroutines——比如 .NET 中的 ManualResetEvent)?
注意:我是 Go 新手,刚刚学习并开始使用 TCP Server,因为我之前用 C# 编写过。
是的,关闭通道是 Goroutines 之间通信的惯用 Go 方式。
您需要在每个 goroutine 启动时将一个通道传递给它,并在每个网络事件之后使用 select 调用检查该通道。
您还需要为网络事件设置超时,这样您就不会永远挂着连接。