如何让goroutine占用cpu并由我(代码)控制来决定是否让出cpu?

RT。
比如现在有多个goroutine和多个channel,每个goroutine对应一个channel,会不断的从channel里pop数据出来。
我怎样让压力大的goroutine(即对应的channel里面数据较多)多占用cpu,压力小的(即对应的channel数据较少)少占用cpu,有没有runtime的代码可以去显式控制?

已邀请:

sheepbao - 爱go,爱编程,专注网络开发,流媒体、分布式、网络加速,欢迎讨论listomebao@gmail.com

赞同来自:

go的原则就是解放程序猿,按道理你channel的数据多自然就会多占cpu,这个不用你自己控制的。

lrita

赞同来自:

修改linux kernel 启动参数isolcpus,空出几个core,留起来专用,然后调用
runtime.LockOSThread()绑定goroutine和thread,然后再调用syscall把调度到空出的core上,就实现了goroutine独占cpu core。


或者简单的只调用runtime.LockOSThread()让goroutine独占一个thread

要回复问题请先登录注册