覆盖缓冲区通道超过其容量确实会产生任何影响?由于有另一个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 关注
- 88 浏览
添加回答
举报
0/150
提交
取消