文章预览
👉 目录 1 故事开始的地方——这段代码为什么会阻塞? 2 三个问题 3 channel 4 加餐 腾讯内网上,一位提问者对一段代码为什么会阻塞发出了疑问,该问题讨论跨度约一周,探讨过程中,出现了许多由于不够理解 channel 而产生的问题,非常经典。本文结合内网上的讨论和 channel 的原理,来帮助大家加深对于 channel 的理解。 关注腾讯云开发者,一手技术干货提前解锁👇 01 故事开始的地方——这段代码为什么会阻塞? 开始,题主提出了这样一个问题: func main () { testContinue() } func testContinue () { in := make ( chan *Content, 20 ) audit := make ( chan *Content, 20 ) streamTextPreProcessStop := make ( chan struct {}) // 向in协程无脑放2000个数据 go func () { for i := 0 ; i < 2000 ; i++ { in < - { i: i, } log.Infof( "put in content = %s" , strconv.Itoa(i)) } }
………………………………