我是GO谷歌的新手.在缓冲通道中,这是一个程序:
package main
import "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)
}
Run Code Online (Sandbox Code Playgroud)
它产生输出.但根据http://tour.golang.org/#64,它说:
仅在缓冲区已满时才发送到缓冲的通道块.缓冲区为空时接收阻止.
正如它所说的那样,只有当FULL为什么程序产生输出而不是c在第一个语句处等待无穷大时才发送它.?
我猜你没理解幻灯片.它说"只阻止"你理解"只工作".
幻灯片说的是:
如果缓冲区未满,则您的发送将正常工作,并且不会阻止
如果缓冲区已满,则发送将阻塞,直到缓冲区未满.
所以你的例子按指定的方式工作.
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |