Send 和 Offer 之间的 Kotlin Channels 使用差异

Kotlin Channels usage difference between Send and Offer

Channels 有两个函数可以让我们向其中发送事件。 Sendoffer.

我想更好地理解两者之间的区别。

我想检查一些陈述是否属实。

如果您知道任何其他主要区别,我很乐意知道。

提前致谢

send 在发送到的通道已满时暂停调用它的协程。

send 不发送 一个频道 另一个频道。当您调用 send 时,您正在将一个元素 发送到 通道。然后通道期望另一个代码块从不同的协同程序调用 receive

RendezvousChannel中容量是0。这意味着 send 总是暂停等待来自另一个协程的 receive 调用。如果您在 RendezvousChannel 上调用了 send,然后使用 offeroffer 将不会抛出异常(仅当通道关闭时才会抛出异常),而是会抛出异常return false 如果在初始 send 之后没有对 RendezvousChannel 调用平衡 receive。这是因为 offer 尝试立即将元素添加到通道,如果它不违反其容量限制。