我是GO谷歌的新手。在缓冲通道中,这里有一个程序:package mainimport "fmt"import "time"func main() { c := make(chan int, 2) c <- 1 fmt.Println(<-c) time.Sleep(1000 * time.Millisecond) c <- 2 fmt.Println(<-c)}它产生输出。但根据http://tour.golang.org/#64它说:仅当缓冲区已满时才发送到缓冲通道块。当缓冲区为空时接收块。正如它所说,它只在FULL时发送,为什么程序会产生输出而不是c在第一条语句中等待无穷大。?
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
我猜你没有正确理解幻灯片。它说“仅阻止”您理解“仅工作”。
幻灯片上说的是:
如果缓冲区未满,那么您的发送将正常工作并且不会阻塞
如果缓冲区已满,则您的发送将阻塞,直到缓冲区未满为止。
所以你的例子按规定工作。
- 2 回答
- 0 关注
- 177 浏览
添加回答
举报
0/150
提交
取消