线程创建的策略是什么,创建数量是否可控,会不会导致线程数量过多?
来源:1-4 Go 程序是怎么跑起来的
岁月无声_0001
2021-05-16 10:51:18
线程是如何创建的,数量是否可控,会不会导致线程数量过多,该如何处理
1回答
一般情况下,M 约等于 P 的数量,当有 M 被阻塞的时候,会创建额外的 M 去处理任务
课程中讲了可以被接管的阻塞和不可被接管的阻塞,
不可接管的阻塞(cgo,syscall)状态的线程如果太多,那就有可能创建很多线程
M 的数量在 runtime 中默认限制 10000,超过 10000 进程会崩溃。已经创建出来的 M 是没有办法销毁的,可以看看我课上讲 cgo 阻塞的那页下面的链接给出来的方案。
相似问题