永远不需要忙碌的循环,除了消耗CPU时间之外,该循环什么也不做。它不仅消耗整个OS线程,而且goroutines被协同调度,并且会干扰运行时的goroutines。例如,在Go1.5上,这通常会阻止GC的停止世界阶段(您可以通过设置进行测试
GOGC=off)。
为了使该程序运行,您可以在for循环中插入一个调度点,但是最好将其完全删除。
func forever() { for { runtime.Gosched() }}
永远不需要忙碌的循环,除了消耗CPU时间之外,该循环什么也不做。它不仅消耗整个OS线程,而且goroutines被协同调度,并且会干扰运行时的goroutines。例如,在Go1.5上,这通常会阻止GC的停止世界阶段(您可以通过设置进行测试
GOGC=off)。
为了使该程序运行,您可以在for循环中插入一个调度点,但是最好将其完全删除。
func forever() { for { runtime.Gosched() }}