从cpu利用率来说runtime.Gosched应该更好吧,都是让出cpu,runtime.Gosched让出后,后续交给go本身的runtime去调度,不需要像sleep那样自己定义time,runtime去调度的话,精准度应该比人为更好,比如你怎么知道让你的程序睡眠多少,都是一个大概值,当你通过runtime.Gosched让出cpu的时候,可能此时你的g已经被安排在了下一个调度。但是假设在你刚好sleep的时候,cpu也没其他啥事,只能根据你设置的时间,干等你了,利用率不是很高。

从业务角度来说,不管是runtime.Gosched还是sleep,你怎么能保证在cpu切换来的时候,能到达你需要的状态呢,这个是实际业务需要思考的。