1. ホーム
  2. 行く

[解決済み】チャンネルを開いたままにしておいてもいいのでしょうか?

2022-04-10 09:14:33

質問

Go チャンネルの状態をチェックしない場合、そのチャンネルをずっと開いたまま(決して閉じない)にしても問題ないですか?メモリ リークにつながるのでしょうか?次のようなコードで大丈夫でしょうか?

func (requestCh chan<- Request) GetResponse(data RequestData) Response {
    reply := make(chan Response)
    requestCh <- Request{data: data, replyCh: reply}
    return <-reply
}

解決方法は?

Goチャンネルをずっと開いたまま、閉じないままでも大丈夫です。チャネルが使用されなくなると、ガベージコレクションされます。

<ブロッククオート

チャンネルを閉じる必要があるのは、受信側が はクローズを探しています。 チャンネルを閉じることは、そのチャンネルの制御信号であり チャネルは、これ以上データが続かないことを示す。

デザインの質問です。チャンネルクローズ