我将通道缓冲区的大小设置为零,例如var intChannelZero = make(chan int)
,从中获取值时intChannelZero
将被阻塞,直到intChannelZero
具有值为止。
另外,var intChannelOne = make(chan int, 1)
当从中获取值时,将通道缓冲区的大小设置为1,例如,intChannelOne
将被阻塞,直到intChannelOne
具有值为止。
我们知道容量intChannelZero
为零,容量intChannelOne
为一,所以我想知道:
intChannelZero
like时intChannelZero <- 1
,将值保存在哪里? intChannelZero
以及intChannelOne
何时赋予它们价值。谁可以在Golang运行时环境级别解释它?非常感谢。
如果通道是无缓冲的(容量为零),则仅在发送方和接收方都准备就绪时通信才能成功。
如果通道已缓冲(容量> = 1),则在通道不满的情况下发送成功而不阻塞,而在缓冲区不为空的情况下接收成功而不会阻塞。
当像intChannelZero <-1一样将值放入intChannelZero时,将值保存在哪里?
该值从发送方复制到接收方。该值不会保存在实现可以使用的任何临时变量以外的任何地方。
给它们添加值时,intChannelZero和intChannelOne之间的差异。
在intChannelZero块上发送,直到接收器准备就绪。
在intChannelOne块上发送,直到缓冲区中有可用空间为止。
归档时间: |
|
查看次数: |
268 次 |
最近记录: |