P和M的数量一定是1:1吗?如果一个G阻塞了会怎么样?

本文阅读 1 分钟
首页 golang 正文

题目序号:(166)

题目来源:哔哩哔哩

频次:1

答案1:(栾龙生)

不一定,M必须持有P才可以执行代码,跟系统中的其他线程一样,M也会被系统调用阻塞。P的个数在启动程序时决定,默认情况下等于CPU的核数,可以使用环境变量GOMAXPROCS或在程序中使用runtime.GOMAXPROCS()方法指定P的个数。
M的个数通常稍大于P的个数,因为除了运行Go代码,runtime包还有其他内置任务需要处理。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
syncpool的实现原理
« 上一篇 09-17
问了sync.Map(我说我对sync.Pool比较熟,就说Pool了)
下一篇 » 09-17

发表评论

发表评论