Goroutine是Go运行时管理的轻量级协程,通过go关键字启动,主函数退出时所有Goroutine将被终止,需使用sync.WaitGroup或channel进行同步以确保执行完成。

在Go语言中,并发编程的核心是Goroutine。它不是一个操作系统线程,而是一个由Go运行时管理的轻量级协程。创建和启动一个Goroutine极其简单,但要正确使用,关键在于理解其执行机制和生命周期。
启动一个Goroutine的唯一方法就是在函数调用前加上go关键字。这个函数可以是一个已定义的命名函数,也可以是一个匿名函数。一旦执行到go语句,Go运行时会立即在一个新的Goroutine中异步执行该函数,而主程序(或当前Goroutine)则不会等待,继续执行后续代码。
例如:
go printMessage("Hello")
go func() { fmt.Println("In goroutine") }()
这两种方式都会立刻启动一个新的Goroutine去执行对应的函数逻辑。
立即学习“go语言免费学习笔记(深入)”;
理解Goroutine的行为特点是避免常见陷阱的基础。它的核心特点决定了我们编写并发代码的方式。
main函数所在的主Goroutine结束时,所有其他派生出的Goroutine都会被强制终止,无论它们是否执行完毕。这就是为什么直接运行一个简单的Goroutine后,程序可能什么都没输出就结束了。go关键字本身不提供任何等待机制。它只是“发射”出去一个任务,然后就不管了。如果需要知道任务何时完成,必须借助外部工具进行同步。由于主Goroutine的退出会终结一切,我们必须采取措施让主程序等待工作Goroutine完成。最粗糙的方法是使用time.Sleep(),但这完全不可靠,因为无法预知任务何时结束。正确的做法是使用同步原语。
WaitGroup是最常用的工具。在启动每个Goroutine前调用Add(1),在Goroutine内部的任务结束后调用Done(),最后在主程序中调用Wait()阻塞直到计数器归零。基本上就这些,掌握go关键字的使用和正确的同步方法,你就掌握了Go并发的第一步。
以上就是Golang如何创建和启动Goroutine_Golang Goroutine创建与执行方法总结的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号