概述
本 Skill 提供 Go 语言并发编程的完整生产级模式,核心围绕「以通信实现共享,而非共享实现通信」的 Go 并发哲学。内容覆盖 goroutine 生命周期管理、channels 通信、sync 原语、context 取消机制、worker pools、pipelines、graceful shutdown 等关键模式。
核心用法
1. 基础并发原语:goroutine + channel + select + sync 包(Mutex、WaitGroup)+ context
2. Worker Pool 模式:固定数量 goroutine 处理任务队列,防止无界并发
3. Fan-Out/Fan-In Pipeline:多阶段数据处理,支持并行转换与结果聚合
4. errgroup 模式:并行任务错误传播与自动取消
5. Bounded Concurrency:通过 semaphore 或 channel 实现限流控制
6. Graceful Shutdown:signal 捕获 + context 取消 + WaitGroup 等待
7. 并发 Map:sync.Map(读多写少)与 ShardedMap(写多场景)的选择策略
显著优点
- 生产级代码:所有模式均为经过验证的工业标准实现
- 完整覆盖:从基础原语到复杂 pipeline,覆盖并发编程全场景
- 最佳实践明确:大量 DO/DON'T/NEVER 规则,规避常见陷阱
- race detection 集成:强调
-race测试,主动发现数据竞争 - context 优先:所有模式内置取消与超时支持,符合现代 Go 规范
潜在局限
- 语言限定:仅适用于 Go,无法迁移至其他语言
- 复杂度门槛:channel 与 select 的组合逻辑对初学者有一定认知负担
- 外部依赖:errgroup、semaphore 需引入
golang.org/x/sync - 无动态调整:Worker pool 大小静态配置,运行时自适应需额外开发
适合人群
- 中高级 Go 开发者,需构建高并发后端服务
- 从其他语言迁移至 Go,需掌握 CSP 并发模型
- 负责性能优化、排查 race condition 的工程团队
常规风险
- goroutine 泄漏:未正确处理 ctx.Done() 或缺少退出路径
- channel 关闭 panic:违反「仅 sender 关闭」原则
- 循环变量捕获陷阱:goroutine 闭包错误捕获循环指针
- 无界并发:未使用 worker pool 或 semaphore 导致资源耗尽
安全评估
本 Skill 仅输出代码模式与最佳实践,不执行代码、不访问外部资源、不处理敏感数据。风险等级为 S+(最高安全等级)。