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中文网其他相关文章!