Can*_*ato 5 channel kotlin kotlin-coroutines kotlin-coroutine-channel
通道有两个功能允许我们向其中发送事件。
Send
和offer
。
我想更好地理解两者之间的区别。
我有一些说法想核实一下是否属实。
Send
是一个挂起函数。什么会让我的代码(而不是线程)等待它完成。因此,在内部事件send
完成/取消后,它会继续运行。或者它只会挂起,直到我可以对事件进行排队/接收它?send
从一个通道使用到另一个通道,第一个通道将被阻塞,直到第二个通道可以接收/排队?offer
一个新的事件。这会引发offer
异常吗?导致频道收不到?如果您知道任何其他主要区别,我会很高兴知道。
提前致谢
send
当发送到的通道已满时,暂停调用它的协程。
send
不从一个通道发送到另一通道。当您调用时,您将向通道send
发送一个元素。然后,通道期望从不同的协程调用另一个代码块。receive
在 a 中,RendezvousChannel
容量为0
。这意味着send
始终挂起等待receive
另一个协程的调用。如果您先调用send
了 aRendezvousChannel
然后使用offer
,offer
将不会抛出异常(仅当通道关闭时才会抛出异常),而是如果在初始 后没有调用false
平衡,它将返回。这是因为如果元素不违反其容量限制,则会尝试立即将元素添加到通道中。receive
RendezvousChannel
send
offer
归档时间: |
|
查看次数: |
2689 次 |
最近记录: |