golang 里goroutine产生的线程数量

前端之家收集整理的这篇文章主要介绍了golang 里goroutine产生的线程数量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
import "os"

func main() {
for i:=0; i<20; i++ {
go func() {
for {
b:=make([]byte,10)
os.Stdin.Read(b) // will block
}
}()
}
select{}
}
会产生21个线程:
runtime scheduler(src/pkg/runtime/proc.c)会维护一个线程池,当某个goroutine被block后,scheduler会创建一个新线程给其他ready的goroutine
GOMAXPROCS控制的是未被阻塞的所有goroutine被multiplex到多少个线程上运行

猜你在找的Go相关文章