如何理解容量为 C 的通道上的第 k 个接收发生在该通道的第 k+C 个发送完成之前?

问题描述

它来自Channel communication

我真的不明白为什么在 k+Cth 发送之前发生第 k 个接收?为什么不kth发送或k+1次发送?

解决方法

缓冲通道的容量是可能发生的非阻塞发送到通道的数量。当您用完所有容量(C + k 说明)后,下一次发送将被阻止,直到从通道接收到,然后才会完成。

如果用C = 3k = 1 等一些数字来重述链接中的句子(为了清晰起见),它将类似于:
“第四次发送到容量为 3 的频道将在第一次从频道接收后完成”

,

在容量为 C 的通道上的第 k 个接收发生在来自该通道的第 k+C 个发送完成之前。

简单来说就是容量为c的通道一次只能容纳c条消息,因此在容量为4(c)的通道上发送11th(k+c)条消息),7(k) 消息应该已经收到,否则第 11 次发送将被阻止,直到接收为止。