一尘不染

可以打开频道吗?

go

如果我从未检查过Go通道的状态,可以永远保持打开状态(永远不关闭通道)可以吗?会导致内存泄漏吗?下列代码可以吗?

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

阅读 423

收藏
2020-07-02

共1个答案

一尘不染

可以永远保持Go频道永远不关闭。当不再使用该通道时,将对其进行垃圾回收。

请注意,只有当接收器正在寻找关闭通道时,才需要关闭通道。关闭通道是通道上的控制信号,指示没有更多数据跟随。

设计问题:通道关闭

2020-07-02