4

GoでTCPサーバーに取り組んでいます。ここで、クライアントと通信しているすべてのゴルーチンに、接続をドロップし、取得したものをダンプして停止するよう通知したいと思います。

チャネルを閉じることは、それらすべてに通知する方法です。

質問: それは慣用的な Go ですか? 私が間違っている場合; 次に、どうすればよいですか (すべてのゴルーチンに通知するため - .NET の ManualResetEvent のようなもの)?

注:私はGoの初心者で、以前にC#で書いたことがあるので、TCPサーバーを学習して始めました。

4

2 に答える 2

6

はい、チャネルを閉じることは、Goroutine 間で通信する Go の慣用的な方法です。

起動時に各ゴルーチンにチャネルを渡し、各ネットワーク イベントの後に select 呼び出しでチャネルをチェックする必要があります。

また、ネットワーク イベントにタイムアウトを設定して、接続が永遠に滞らないようにすることもできます。

于 2013-03-12T22:04:41.020 に答える