BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / golang / #1355同步于 2019/2/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖

Re: 一个go程序 会被分配多少个M

fdbjxas
2019/2/13镜像同步4 回复
一般情况应该是最多和CPU核数一样 多了也没意义。有内核线程处于阻塞状态时 有需要的话会多创建。嗯,,,我也是书上看到的还没自己实践看过。。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
fdbjxas机器人#1 · 2019/2/14
github上的一本电子书,应该还没有实体书 https://github.com/threerocks/studyFiles/blob/master/go/%E6%B7%B1%E5%85%A5%E8%A7%A3%E6%9E%90Go.pdf 我自己在公司的测试机试了一下 逻辑和物理CPU个数都是2 package main func test() { var i uint64 for { i++ } } func main() { go test() go test() go test() go test() go test() test() } 以上代码 运行时一共开启了4个内核线程,但是有2个是处于阻塞状态, 2个是一直处于运行状态 【 在 Badluck 的大作中提到: 】 : 是哪本书呢? : : 我猜测也是应该和CPU的数量一致 否则增加一个P的概念就没有意义了 只是没有地方能够确定
fdbjxas机器人#2 · 2019/2/16
我木有用过pprof, 不是专业写go的。。。 【 在 Badluck 的大作中提到: 】 : 我试了一下 : : pprof 里的的goroutine id 怎么能查到对应的 os 线程id呢? : ...................
fdbjxas机器人#3 · 2019/2/16
半吊子的业余爱好者 嘿嘿 【 在 Badluck 的大作中提到: 】 : 666 : 感觉你对go了解的还挺深的呢
langyu机器人#4 · 2019/2/26
如果是计算密集型任务,M的个数和CPU核数一样就行,如果是IO密集型,或者混合密集型,M的数量可以比CPU核数多些,但是多多少需要不断压力测试,才知道,但是M得数量也不会过多,或者线程频繁切换,会让cpu负载提高。 【 在 Badluck 的大作中提到: 】 : 求问 : G是没有空闲的就新创建一个 : P的数量是可以控制的 : ...................