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

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

阅读 4.8k
2 个回答

golang目前没有办法控制单个goroutine CPU数量,但我们可以从程序设计去控制,例如增加并发池中可同时执行队列数去控制。

压力大的,用多个goroutine消费。
有同步损耗,但在总体应该还是效率更高一点。

推荐问题