为什么这里再开一个goroutine发送done就不会卡主呢?

来源:11-2 使用Channel等待任务结束

慕仙9964762

2018-04-21

为什么这里再开一个goroutine发送done就不会卡主呢?

写回答

1回答

ccmouse

2018-04-22

因为开一个goroutine,这里的go语句开完goroutine后会立刻返回,运行下一句语句。那么在goroutine里面发送done的时候会卡住,但是是卡在我们新开的goroutine里面,而不是main(go语言的main函数也运行在goroutine里面)里面。

当我们又运行到这里,我们会再开第二个goroutine,同样也是发送done。这样大家都不卡住。当然,代价是如果接收方慢的话会goroutine越开越多。


0
3
ccmouse
回复
扎西笑嘻嘻
你说的很对!
2020-04-26
共3条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程