什么关闭kotlinx.coroutines频道

时间:2017-05-10 09:54:27

标签: kotlin coroutine kotlin-coroutines

使用channel.close()关闭kotlinx.coroutines频道是什么以及不手动关闭频道的负面影响是什么?如果我不手动关闭频道会有一些不必要的处理?是否会在某个地方引用阻止其成为GCd的频道?或者,关闭功能是否仅作为向渠道的潜在用户通知其无法再使用的方式。

(问题转自Kotlin论坛https://discuss.kotlinlang.org/t/closing-coroutine-channels/2549

1 个答案:

答案 0 :(得分:14)

通过发送一个特殊的"关闭令牌来概念性地关闭一个频道"通过这个渠道。当消费者要处理有限的元素序列时,您关闭一个通道,并且必须向消费者发出此序列已结束的信号。否则你不必关闭一个频道。

频道不依赖于任何原生资源,也不必关闭它们以释放内存。简单地删除所有对通道的引用都很好。 GC会来清理它。