多个goroutine处理一批数据(一个长度为2000万的切片),但是 随着协程数量的增加,每个goroutine处理的时间不一样(处理的数据是平均分摊的),相差很大。例如机器32核,4个goroutine并发处理的时间是400ms左右,有4个CPU的使用率近100%,但是32个goroutine并发处理耗时从200ms到800ms不等,为什么会差别这么大,而且CPU无法100%利用,使用率压不上去。我有看gc日志,期间没有gc,并且没有锁。
加上 `runtime.GOMAXPROCS(runtime.NumCPU())` 试试
看你做什么操作了,是不是有系统调用或者io之类的操作, 这类操作会阻塞
#2
更多评论