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 创建新的线程

0
0

深入Go底层原理,重写Redis中间件实战

深入Go语言原理+Go重写Redis

474 学习 · 172 问题

查看课程