gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:14 26 4
gpt4 key购买 nike

我有一个在 Ubuntu 上看起来像这样的 go 程序

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 上的输出是 no输出。它似乎适用于 OSX

这是 OSX 的输出:

在 Ubuntu 上输出如下所示

这种疯狂有原因吗?我是否做错了什么,可能在两个不同的操作系统上有不同的处理方式?

为什么 Ubuntu 没有显示输出?

最佳答案

忙等待 for {} 循环不会屈服于调度程序,因此您的 goroutines 可能会或可能不会运行。这与操作系统无关;只是去掉 for {} 循环。

关于go - 为什么在 Ubuntu 上无限执行例程后不会从线程打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com