有2个关于协程方面的疑问
1. go语言可以轻松创建大量的协程,那么这个协程数量应该有个上限吧,一般是多少呢?是十万,还是一百万,还是更多?
2. 假如系统最多能创建100万个协程,而且每个协程里面的代码都是死循环,就是这些协程不会退出,那么当创建第1000001个协程时,程序的行为会怎样?是程序直接崩溃,还是让第1000001个协程阻塞等待,等调度器重新调度?
理论: 执行一个goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。
实际情况:现实任何一个server除了goroutine还有很多其他占用CPU和MEM的部分。 如果你有此需求, 无论采用什么语言都会有此问题, 那么只能通过集群 负载均衡等一系列措施去执行了
#19
更多评论