协程的数量需要控制住吗,比如协程池之类的

来源:16-3 并发调度器

jiege521

2020-02-18

老师你好,我想问一下,在go语言中,对协程的的数量有没有限制(函数前面加个go就是开一个协程吧),比如来个功能就用go启动一个协程,如果开了上千个,或者for循环启动上千或者万个协程,有没有可能机器就挂掉了,需要做个协程池吗,限制协程数量比如固定100,多的话就阻塞住,需要这样吗

写回答

1回答

ccmouse

2020-02-20

协程的数量级是可以很大的,万级没有问题,更大的话也是可以做的。

相比这个数量,我们更需要担心goroutine leak的问题,就是goroutine的数量随着时间只增不减。这样的话,服务器运行一段时间必然挂掉。通常这是由于许多goroutine都被block的缘故。可以通过runtime.NumGoroutine()来监控。

1
0

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

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

5995 学习 · 1909 问题

查看课程