什么关闭kotlinx.coroutines频道

Rom*_*rov 19 coroutine kotlin kotlin-coroutines

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

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

Rom*_*rov 18

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

通道不依赖于任何本机资源,并且不必关闭它们以释放其内存.简单地删除对通道的所有引用都很好.GC会来清理它.

  • 这是相同的。当您关闭广播频道时,它会向所有订阅者广播相应的关闭令牌。 (2认同)