通知所有goroutines

时间:2013-03-12 21:57:11

标签: concurrency tcp parallel-processing go

我正在使用Go中的TCP服务器。现在我想通知所有正在与客户交谈的goroutines放弃他们的连接,转储他们已经获得的东西并停止。

关闭频道是一种通知所有频道的方式。

问题是:这是惯用的Go吗?如果我错了;那么我该怎么办(用于通知所有goroutines - 类似于.NET中的ManualResetEvent)?

注意:我是Go新手,只是学习并开始使用TCP Server,因为我之前在C#中写过。

2 个答案:

答案 0 :(得分:4)

是的,关闭频道是Goroutines之间沟通的惯用方式。

您需要在启动时将频道传递到每个goroutine,并在每次网络事件后使用select调用检查频道。

您还需要设置网络事件的超时时间,以便永远不会有连接。

答案 1 :(得分:1)

从Go 1.7开始,您可以使用context包。