我已将通道缓冲区大小设置为零,例如var intChannelZero = make(chan int)
,当从intChannelZero
将被阻止,直到intChannelZero
有价值。
另外,我将通道缓冲区大小设置为 1,例如var intChannelOne = make(chan int, 1)
,当从intChannelOne
将被阻止,直到intChannelOne
有价值。
我们知道的容量intChannelZero
为零时,容量为intChannelOne
是一,所以我想知道:
- 当给
intChannelZero
like intChannelZero <- 1
,值保存在哪里?
- 之间的差异
intChannelZero
and intChannelOne
当给它们赋予价值时。
谁能从Golang运行环境层面解释一下?多谢。
如果通道无缓冲(容量为零),则仅当发送方和接收方都准备好时通信才会成功。
如果通道已缓冲(容量 >= 1),则如果通道未满,则发送成功且不会阻塞;如果缓冲区不为空,则接收成功且不会阻塞。
当向 intChannelZero 添加值(例如 intChannelZero
该值从发送方复制到接收方。除了实现可能使用的任何临时变量之外,该值不会保存在任何地方。
intChannelZero 和 intChannelOne 赋值时的区别。
在 intChannelZero 块上发送,直到接收器准备就绪。
在 intChannelOne 块上发送,直到缓冲区中有可用空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)