go:哪个通道端点在双向时必须关闭通道?

时间:2016-10-25 14:47:30

标签: go channel

由于Go的理念,通道应仅由发件人关闭。当一个频道是双向的时候应该在哪里关闭?

1 个答案:

答案 0 :(得分:1)

这个问题有点难以解释,因为go没有双向通道。数据仅在单一方向上流动 - 从作者到读者。

Go中您可以拥有的是频道上的多个读者或作者。这是否有意义取决于上下文。如果您有多个编写器,则需要某种同步来进行关闭操作,例如:一个互斥体。但是,您还需要在每次写入操作之前锁定它,以确保您不在封闭通道上写入。如果你真的不需要通道在接收器端关闭的信息,你也可以简单地省略关闭,因为垃圾收集器也会收集未关闭的通道。