用途:面向 Go 并发开发,提供生产级的并发模式与实现参考,覆盖 goroutine、channel、同步原语及 context 管理。适用场景包括构建并发 Go 应用、实现 worker pool 与流水线、管理 goroutine 生命周期、用 channel 通信、调试竞态条件、实现优雅关闭。
主要能力与模式:
- 并发原语:goroutine(轻量并发执行)、channel(goroutine 间通信)、select(多路复用 channel 操作)、sync.Mutex(互斥)、sync.WaitGroup(等待完成)、context.Context(取消与超时)。核心原则为“不要通过共享内存来通信,而要通过通信来共享内存”。
- Worker Pool:用固定数量 worker 消费 jobs channel,context 控制取消,WaitGroup 等待并关闭结果 channel。
- Fan-Out/Fan-In 流水线:生成、处理与合并多个 channel,用 merge 汇聚。
- 有界并发:使用 golang.org/x/sync/semaphore 或基于 channel 的信号量限制并发数。
- 优雅关闭:结合 signal.Notify 监听 SIGINT/SIGTERM、context 取消与超时等待完成清理。
- 错误组与取消:使用 golang.org/x/sync/errgroup 并发执行、首错取消其他任务,并用 SetLimit 限制并发。
- 并发 Map:sync.Map 适合读多写少;写多场景可用分片 map(ShardedMap)配合 RWMutex。
- select 超时与非阻塞:time.After 超时、default 非阻塞收发、优先级 select。
使用方式:资料给出可直接参考的 Go 代码示例与关键命令。竞态检测命令:go test -race ./...、go build -race .、go run -race main.go。
最佳实践:使用 context 处理取消与超时;仅由发送方关闭 channel;用 errgroup 处理并发错误;已知数量时缓冲 channel;可能时优先 channel 而非 mutex。避免 goroutine 泄漏;不要由接收方关闭 channel;非必要不使用共享内存;不要忽略 context 取消;不要用 time.Sleep 做同步。
限制:资料未提供安装方式、收费、价格、平台支持、性能效果或版本要求等信息,暂未提供;以上内容仅依据所给资料整理。