该技能面向 Go 并发编程,内容以模式与示例代码为主,帮助理解并正确使用 goroutine、channel、context 与 sync 原语。
用途:编写并发安全的 Go 代码,避免 goroutine 泄漏、数据竞态与无限阻塞。
主要能力:
- Goroutine 生命周期:基本启动、参数传递、defer 清理,以及通过 context 显式取消避免泄漏。
- Channel 模式:缓冲与非缓冲 channel 的区别;fan-in(多路合并)、fan-out(分发到多 worker)、pipeline(多阶段流水线)、worker pool(工作池)。
- Context:WithCancel、WithTimeout、WithDeadline 的创建与传播,用于取消和截止时间控制。
- 同步原语:Mutex/RWMutex 保护状态、Once 单次初始化、WaitGroup 协调、Cond 条件等待、atomic 计数器。
- 协调与限流:errgroup 统一收集错误、rate.Limiter 限流中间件、基于 ticker 的背压处理。
- 优雅关闭:HTTP 与 gRPC 服务的 shutdown 流程。
- select 多路复用:同时处理多个 channel、超时与取消。
使用方式:示例以 Go 代码片段呈现,可直接参考其结构编写函数;竞态检测使用 go test -race ./... 或 go run -race main.go。
适用场景:并发任务分发、数据流水线、服务端请求处理、外部调用超时控制、批量任务限流与优雅退出。
限制与注意:资料未提供安装命令、版本要求或收费信息;性能数字(如 goroutine 约 2KB 栈、约 1.5µs 启动、channel 发送约 50–90ns)为资料给出的参考值,实际以运行环境为准。应始终调用 cancel、避免无限阻塞、由发送方关闭 channel、在测试中检查竞态。