首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go 并发 Worker Pool:最小实现与坑

Go 并发 Worker Pool:最小实现与坑

作者头像
安全风信子
发布2025-11-18 19:12:07
发布2025-11-18 19:12:07
520
举报
文章被收录于专栏:AI SPPECHAI SPPECH

一句话承诺:用图与代码实现一个“够用”的Worker Pool,附常见坑位说明。

代码示例

代码语言:javascript
复制
package main
import (
    "fmt"; "sync"; "time"
)
func main(){
    jobs := make(chan int, 10)
    var wg sync.WaitGroup
    // 启动3个worker
    for i:=0;i<3;i++{
        wg.Add(1)
        go func(id int){
            defer wg.Done()
            for j := range jobs {
                fmt.Printf("worker %d processing %d\n", id, j)
                time.Sleep(100 * time.Millisecond)
            }
        }(i)
    }
    // 生产任务
    for j:=1;j<=10;j++{ jobs <- j }
    close(jobs)
    wg.Wait()
}

少量解释

  • 使用有缓冲的chan作为队列;关闭chan通知worker结束。
  • 使用WaitGroup等待所有worker结束,避免提前退出。

常见坑与替代法

  • 坑:忘记关闭jobs导致协程泄漏。替代:生产完成后close。
  • 坑:任务处理失败缺少重试。替代:在worker内部封装重试策略。

下一篇预告

Kubernetes 端口调试:kubectl port-forward 的三步核查(命令+图)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码示例
  • 少量解释
  • 常见坑与替代法
  • 下一篇预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档