为了账号安全,请及时绑定邮箱和手机立即绑定

写入超过其容量的缓冲通道

写入超过其容量的缓冲通道

Go
慕斯709654 2022-10-04 18:45:47
覆盖缓冲区通道超过其容量确实会产生任何影响?由于有另一个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


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号