Go goroutine

goroutine 是 Go 的轻量并发执行单元,用极低启动成本支持大量并发任务,但不等于自动安全或自动有序。

#type / concept #status / growing #tech / dev #resource / go

[!info] related notes

Go goroutine

一句话定义

goroutine 是 Go 运行时管理的轻量并发执行单元,允许你用很低的成本启动大量并发任务。

核心机制 / 工作原理

启动一个 goroutine 很简单:

go doWork()

但真正要理解的是它背后的语义:

  • go 关键字会让函数异步执行
  • 调用方不会等待它自然完成
  • goroutine 由 Go 运行时调度,不直接等同于一个操作系统线程

这让 Go 很适合 I/O 密集型并发服务,但也意味着:

  • 任务生命周期必须有人管理
  • 并发共享数据必须认真同步
  • “能并发跑起来”不等于“结果就正确”

最小例子 / 最小场景

go func() {
    fmt.Println("background task")
}()

这行代码真正的重点不是语法,而是心智:

  • 你创建了一个新的并发执行路径
  • 主流程和它之间需要明确通信或等待方式

最值得先形成的认知

  • goroutine 更像任务,而不是“开线程”
  • 启动容易,收尾更重要
  • 并发问题通常出在退出、取消、共享状态和错误传播

边界与易混淆点

  • goroutine 不是并行的同义词,具体是否并行执行取决于运行时和环境
  • goroutine 之间默认不会自动同步
  • 忘记回收或退出的 goroutine 会形成泄漏
创建于 2026/6/20 更新于 2026/6/20