七叶笔记 » golang编程 » Golang源码探索-线程数量上限 默认操作系统线程数量上限为10000

Golang源码探索-线程数量上限 默认操作系统线程数量上限为10000

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)

扩展阅读:

相关文章