线程创建的策略是什么,创建数量是否可控,会不会导致线程数量过多?

来源:1-4 Go 程序是怎么跑起来的

岁月无声_0001

2021-05-16 10:51:18

线程是如何创建的,数量是否可控,会不会导致线程数量过多,该如何处理

写回答

1回答

Xargin

2021-05-16

一般情况下,M 约等于 P 的数量,当有 M 被阻塞的时候,会创建额外的 M 去处理任务


课程中讲了可以被接管的阻塞和不可被接管的阻塞,


不可接管的阻塞(cgo,syscall)状态的线程如果太多,那就有可能创建很多线程


M 的数量在 runtime 中默认限制 10000,超过 10000 进程会崩溃。已经创建出来的 M 是没有办法销毁的,可以看看我课上讲 cgo 阻塞的那页下面的链接给出来的方案。

2

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程