我正在使用Go中的TCP服务器。现在我想通知所有正在与客户交谈的goroutines放弃他们的连接,转储他们已经获得的东西并停止。
关闭频道是一种通知所有频道的方式。
问题是:这是惯用的Go吗?如果我错了;那么我该怎么办(用于通知所有goroutines - 类似于.NET中的ManualResetEvent)?
注意:我是Go新手,只是学习并开始使用TCP Server,因为我之前在C#中写过。
答案 0 :(得分:4)
是的,关闭频道是Goroutines之间沟通的惯用方式。
您需要在启动时将频道传递到每个goroutine,并在每次网络事件后使用select调用检查频道。
您还需要设置网络事件的超时时间,以便永远不会有连接。
答案 1 :(得分:1)
从Go 1.7开始,您可以使用context包。