
SetMaxThreads
#L117
// The initial setting is 10,000 threads. 这段注释说明了默认 线程 数量上限是10000 。
这个时候很多人有疑问,具体的实现代码是在哪里呢?

maxmcount=10000
#L534 这里是设置上限的 具体代码了。
上图中说明了 启动过程,
我们跳转到sched 变量定义处

sched 变量定义
#L861
sched是runtime包内全局的schedt类型

schedt
#L569
maxmcount int32 // maximum number of m’s allowed (or die)
maxmcount 线程数量上限
如果超出maxmcount 线程数量上限的时候会怎么样呢?

超出maxmcount 线程数量上限
#L590
超出线程数量上限之后会走throw 。(throw 传说是一个不能recovery 的panic).
如果是服务器非常非常强大,10000个线程简直so easy!!!
你可以这样:

SetMaxThreads
那么可以设置的上限是多少呢

那么可以设置的上限是多少呢
官方的代码是非常严谨的,禁止超过MaxInt32 (0x7fffffff)
扩展阅读: