20210304关于管道的关闭大总结 - ziyouzy/2021blog GitHub Wiki
当执行了close(ch),禁止向管道生产消息,试图向已经关闭的管道生产消息会导致panic-----(Chs<-xxx)
当执行了close(ch),且之前的消息被消费完了,那么继续消费消息就不会阻塞了,而是返回零值(管道内所对应数据类型的0值)-----(<-Chs)
关闭已经关闭的channel也会导致panic-----(close(close(Chs))
但是在关闭之前留在管道里面的消息还可以被消费
无论怎样都不应该在消费端关闭channel,因为在消费端无法判断生产端是否还会向通道中发送元素值
也就是说ProactiveDestruct()(显示析构)的逻辑是不合理的,因为内部会主动关闭一个Raws,然而这个Raws在当前river-node一定会是生产端,但是对于他的上一个river-node一定是消费端,他拥有着双重身份,因此得出结论: