Golang无限开启Goroutine?该如何限定Goroutine数量?

如果不控制Goroutine的数量会出什么问题?首先我们都知道Goroutine具备以下两个特点:体积轻量(占内存小,一个2kb左右)优秀的GMP调度(详见:图解Golang的GMP原理与调度流程)那么goroutine是否真的可以无限制的开启呢?如果做一个服务器或者一些高业务的场景,能否随意的开启goroutine并且没有控制控制其生命周期呢?让这些goroutine自生自灭,相信大都数人都会这么想:毕竟有强大的GC和优秀的调度算法支撑,应该可以无限的开启吧。我们先看下面一个例子:demo1.gopackagemainimport("fmt""math""runtime")funcmain(){//模拟用户需求业务的数量task_cnt:=math.MaxInt64fori:=0;i