Go 并发入门:从 goroutine 到 worker pool
并发编程是现代后端开发中不可或缺的能力。Go 语言(Golang)的设计哲学里,并发是“一等公民”。相比 Java 和 Python 的线程或协程模型,Go 提供了一种既轻量又直观的并发机制:goroutine + channel + select。
本文将通过几个循序渐进的示例,从基础到应用,带你理解 Go 的并发核心。
1. goroutine —— 轻量级并发任务
在 Go 中,只需在函数调用前加一个 go
关键字,就能让该函数在单独的 goroutine 中执行。
package mainimport ("fmt""time"
)func task(name string) {for i := 0; i < 3; i++ {fmt.Println(name, ":", i)time.Sleep(200 * time.Millisecond)}
}func main() {go task("A")go task("B")// 主 goroutine 也在运行time.Sleep(1 * time.Second)fmt.Println("main done")
}
运行结果会交错打印,说明 A 和 B 在同时运行。
👉 关键点:<