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平衡,它将返回。这是因为如果元素不违反其容量限制,则会尝试立即将元素添加到通道中。receiveRendezvousChannelsendoffer
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |