send
приостанавливает сопрограмму, из которой она вызывается, пока канал, на который отправляется, заполнен.
send
не отправляет с одного канала на еще один. Когда вы вызываете send
, вы отправляете элемент на канал. Затем канал ожидает, что другой блок кода вызовет receive
из другой сопрограммы.
В RendezvousChannel
емкость составляет 0
. Это означает, что send
всегда приостанавливает ожидание вызова receive
от другой сопрограммы. Если вы вызвали send
на RendezvousChannel
, а затем использовали offer
, offer
не вызовет исключения (это произойдет только в том случае, если канал закрыт), а вернет false
, если балансировка receive
не вызывалась на RendezvousChannel
после вашего начального send
. Это связано с тем, что offer
пытается немедленно добавить элемент в канал, если он не нарушает его ограничения пропускной способности.