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
