首页  >  文章  >  后端开发  >  为什么主程序退出后我的 Goroutine 仍处于空闲状态?

为什么主程序退出后我的 Goroutine 仍处于空闲状态?

Patricia Arquette
Patricia Arquette原创
2024-11-02 17:15:021019浏览

Why Does My Goroutine Remain Idle When the Main Program Exits?

理解 Goroutine 执行:为什么我的 Goroutine 保持空闲

在你的 Go 代码中,你试图尝试 Goroutine 和通道。目标是创建一个连续从通道读取数据的 goroutine,但预期的“进入 goroutine...”消息从未出现。本文探讨了这种行为背后的原因。

您提供的代码包含一个如下创建的 goroutine:

go func(m *chan string) {
    fmt.Println("Entering the goroutine...")
    for {
        fmt.Println(<- *m)
    }
}(&amp;messages)

虽然 goroutine 已启动,但它很快就会终止,因为主程序立即结束打印“完成!”后。 Goroutines 与主程序同时执行;

为了防止 goroutine 过早终止,你需要找到一种方法,让 goroutine 在执行时保持主程序运行。这可以通过使用等待特定数量消息的单独通道、使用sync.WaitGroup或实现其他技术来实现。

Go 博客提供了有关并发的详细指南 (https://blog .golang.org/go-proverbs)提供了有关 Go 中并发如何工作的宝贵见解。

以上是为什么主程序退出后我的 Goroutine 仍处于空闲状态?的详细内容。更多信息请关注PHP中文网其他相关文章!

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