今天看啥  ›  专栏  ›  程序员好物馆

为什么这段代码会阻塞?

程序员好物馆  · 公众号  ·  · 2024-10-10 09:00
    

文章预览

👉 目录 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)) } } ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览