返回笔记列表
Golang 并发模型笔记

Golang 并发模型笔记

2026-05-22#Golang#并发

Goroutine 和 channel 是 Go 并发的两块基石。这篇按项目持续记录踩过的坑与常用范式。

Goroutine 与 channel

启动一个 goroutine 只需 go 关键字,channel 负责在它们之间传值:

ch := make(chan int)
go func() {
    ch <- 42
}()
fmt.Println(<-ch) // 42

select 多路复用

用 select 同时等待多个 channel,配合 time.After 做超时控制是最常见的范式:

  • default 分支让 select 变成非阻塞
  • 从已关闭的 channel 读取会立刻返回零值
  • 永远只让同一个 goroutine 负责关闭某个 channel