go的线程相关问题
来源:5-7 抢占式调度解决了什么问题?

是个么有感情的杀手
2022-06-21
go程序是在程序运行的时候就决定开启多少个线程了吗?还是,线程的数量是动态变化的?这部分的逻辑在哪里呢?
写回答
1回答
-
Moody
2022-06-21
同时并发的线程数量是P的数量,通过GOMAXPROCS限制,同时存在的线程数量是M的数量,通过 schedt.maxmcount 限制。具体的数量是运行时动态变化的。
1. 调度时,schedEnableUser方法会启动用户协程
2.
runtime.startm
方法调度M执行P中的协程3. 如果能从闲置列表中获取到线程 M 就会调用
runtime.newm
创建新的线程00
相似问题