覆蓋緩沖區通道超過其容量確實會產生任何影響?由于有另一個go例程和主要的go例程沒有加入它,所以這里沒有死鎖 package main import "fmt" func main() { ch := make(chan int, 2) go func (){ ch <- 1 ch <- 2 ch <- 4//blocks here but scheduler picked up another go routine ch <- 6 ch <- 10 //close(ch) }() fmt.Println(<-ch) fmt.Println(<-ch) //for v:=range ch{ //fmt.Println(<-ch)//1 2 4 6 10 //} }
1 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
因此,這里沒有僵局
A 確實不會檢測到爭用條件。go build -race .
但是沒有死鎖的主要原因,是主函數在第二個之后退出。fmt.Println(<-ch)
即使匿名的戈魯廷被封鎖了,all程序也會停止。ch <- 4
- 1 回答
- 0 關注
- 78 瀏覽
添加回答
舉報
0/150
提交
取消