Go 运行程序中的线程数

鸟窝 at 
稍微入门 Go 语言的程序员都知道,GOMAXPROCS 变量可以限制并发运行用户态 Go 代码操作系统的最大线程数,你甚至可以通过调用函数 func GOMAXPROCS(n int) int 在程序运行时改变最大线程数的大小,但是当你进一步阅读文档,或者更深入的应用 Go 语言开发的时候,你就会发现,实际线程数要比你设置的这个数要大,有时候甚至远远大于你设置的数值,更悲剧的是,即使你的并发任务回退到没有几个的时候,这些线程数还没有降下来,白白浪费内存空间和 CPU 的调度。当然,这个问题很多人都遇到了,甚至一些开发者都写了文章专门分析,比如:disk io 引起 golang 线程数暴涨的……