Goroutine 与主线程
1. 主 Goroutine
Go 程序启动时,主函数 main() 在主 Goroutine 中运行。
2. Goroutine 并发执行
通过 go 关键字启动新的 Goroutine,实现与主 Goroutine 并发执行。
func printMessage(msg string) {
fmt.Println(msg)
}
func main() {
go printMessage("Hello from Goroutine")
fmt.Println("Hello from main Goroutine")
time.Sleep(time.Second) // 等待子 Goroutine 执行
}
`
3. 主 Goroutine 退出影响
主 Goroutine 退出时,程序终止,所有其他 Goroutine 也会停止执行。
4. 同步等待
常用 sync.WaitGroup 等工具确保所有 Goroutine 执行完成:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("Goroutine working")
}()
wg.Wait()
fmt.Println("All goroutines done")
理解 Goroutine 与主线程的关系,有助于正确编写并发程序。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。