理解 Goroutine 执行:为什么我的 Goroutine 保持空闲
在你的 Go 代码中,你试图尝试 Goroutine 和通道。目标是创建一个连续从通道读取数据的 goroutine,但预期的“进入 goroutine...”消息从未出现。本文探讨了这种行为背后的原因。
您提供的代码包含一个如下创建的 goroutine:
go func(m *chan string) { fmt.Println("Entering the goroutine...") for { fmt.Println(<- *m) } }(&messages)
虽然 goroutine 已启动,但它很快就会终止,因为主程序立即结束打印“完成!”后。 Goroutines 与主程序同时执行;
为了防止 goroutine 过早终止,你需要找到一种方法,让 goroutine 在执行时保持主程序运行。这可以通过使用等待特定数量消息的单独通道、使用sync.WaitGroup或实现其他技术来实现。
Go 博客提供了有关并发的详细指南 (https://blog .golang.org/go-proverbs)提供了有关 Go 中并发如何工作的宝贵见解。
以上是为什么主程序退出后我的 Goroutine 仍处于空闲状态?的详细内容。更多信息请关注PHP中文网其他相关文章!