并发编程

并发是 Go 最具竞争力的语言特性。运行时调度器以极低成本管理数十万 goroutine,配合通道与同步原语,可以构建简洁而高吞吐的并发程序。

内容导航

章节内容
goroutine轻量级协程的创建、等待与生命周期管理
channel通道通信、select 多路复用、方向限定
sync 包WaitGroup、Mutex、Once 与原子操作
context超时控制、取消信号与请求范围数据
工作池与 errgroup并发度控制、错误传播与限流实战模式

核心心智模型

Go 并发遵循一条著名准则:

不要通过共享内存来通信,而要通过通信来共享内存。

实践中两种模式并存:

  • CSP 模式(推荐优先):goroutine 之间通过 channel 传递数据所有权,避免显式加锁。
  • 共享内存:多个 goroutine 读写同一状态时,使用 sync.Mutex 等原语保护。
Warning

并发程序最常见的问题是数据竞争(data race)。开发与测试阶段应始终开启竞态检测器运行代码:

go test -race ./...
go run -race main.go