我是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)}它產(chǎn)生輸出。但根據(jù)http://tour.golang.org/#64它說:僅當緩沖區(qū)已滿時才發(fā)送到緩沖通道塊。當緩沖區(qū)為空時接收塊。正如它所說,它只在FULL時發(fā)送,為什么程序會產(chǎn)生輸出而不是c在第一條語句中等待無窮大。?
2 回答

繁星淼淼
TA貢獻1775條經(jīng)驗 獲得超11個贊
我猜你沒有正確理解幻燈片。它說“僅阻止”您理解“僅工作”。
幻燈片上說的是:
如果緩沖區(qū)未滿,那么您的發(fā)送將正常工作并且不會阻塞
如果緩沖區(qū)已滿,則您的發(fā)送將阻塞,直到緩沖區(qū)未滿為止。
所以你的例子按規(guī)定工作。
- 2 回答
- 0 關(guān)注
- 199 瀏覽
添加回答
舉報
0/150
提交
取消