首页  >  文章  >  后端开发  >  为什么我的 Goroutine 输出在 Windows 上消失?

为什么我的 Goroutine 输出在 Windows 上消失?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 02:08:29839浏览

Why Does My Goroutine Output Disappear on Windows?

Windows 上的 Goroutine 执行:静默故障故障排除

涉及 Goroutine 的简单测试在 Windows 上显示出意外的行为,因为未产生预期的输出。出现问题的原因是 main 函数在终止之前没有等待 goroutine 完成。

Go Awaits

当使用“go”关键字启动 goroutine 时,它与 main 函数同时执行。但是,main 函数的执行不会暂停并等待调用的 goroutine 完成。因此,main 函数退出,可能导致 goroutine 无法调度。

补救措施

为了确保 goroutine 有机会执行并打印其输出,main必须修改函数等待一段时间。这可以使用“time”包和“Sleep”函数来实现。通过引入睡眠时间,main 函数让 goroutine 有机会在终止之前运行并产生输出。

修改后的代码

以下修改后的代码通过以下方式解决了该问题在主函数末尾添加 10 秒睡眠时间:

<code class="go">package main

import (
    "fmt"
    "time"
)

func test() {
    fmt.Println("test")
}

func main() {
    go test()
    time.Sleep(10 * time.Second)
}</code>

输出

修改后的代码现在会产生预期的输出:

test

此修改允许 main 函数在启动 goroutine 后等待,以便在程序终止之前有足够的时间执行并打印“test”消息。

以上是为什么我的 Goroutine 输出在 Windows 上消失?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn