我想要一个像XStream Stream
一样的协程通道
通道的
send
始终是非阻塞的我找到的最接近的是ConflatedBroadcastChannel,但是它“记住”了最后一个值,使其类似于XStream MemoryStream。
是否有一种解决方法来获取我的确切语义?
最佳答案
不,没有像这样的任何 channel ,请随时访问create an issue。
您可以使用的最接近的解决方法是在ConflatedBroadcastChannel
上提供扩展名,该扩展名将丢弃现有元素:
fun <T> ConflatedBroadcastChannel<T>.subscription(): ReceiveChannel<T> {
val subscription = openSubscription()
subscription.poll()
return subscription
}
从使用者的 Angular 来看,此订阅与
XStream
具有相同的语义,但不符合“没有缓冲区”部分:发送的元素将保留在内存中(〜不会被垃圾收集),直到下一个send
被保留为止。叫。关于kotlin - 是否存在行为类似于XStream Stream的Kotlin协程 channel ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51208268/