我在Ubuntu上有一个看起来像这样的程序
package main
import (
"fmt"
"time"
)
func main() {
count := 2
for i := 0; i < count; i++ {
go ping()
}
for {}
}
func ping() {
for {
time.Sleep(time.Second )
fmt.Println("hello world")
}
}
我的想法是两次调用go例程然后在每次运行go例程时我会等待1秒然后打印"hello world"
但是这个程序在ubuntu上的输出没有输出。它似乎适用于OSX
这是OSX的输出:
在Ubuntu上,输出看起来像这样
有这种疯狂的原因吗? 我做错了什么,或许在两种不同的操作系统上处理不同?
为什么Ubuntu没有输出?
答案 0 :(得分:3)
忙等待for {}
- 循环不会产生调度程序,因此您的goroutine可能会或可能无法运行。这与操作系统无关;只是摆脱{{1}}循环。