为什么在Ubuntu上无限期执行后不会从线程打印

时间:2016-09-06 03:28:55

标签: go

我在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没有输出?

1 个答案:

答案 0 :(得分:3)

忙等待for {} - 循环不会产生调度程序,因此您的goroutine可能会或可能无法运行。这与操作系统无关;只是摆脱{{1}}循环。