小工具知识网

当前位置: 首页 > 行业知识 > go并发模式之----工作池/协程池模式

行业知识

go并发模式之----工作池/协程池模式

2026-11-08 19:03:43 来源:互联网转载

常见���式之四:工作池/协程池模式

定义

顾名思义,就是有固定数量的工人(协程),去执行批量的任务

使用场景

  • 适用于需要限制并发执行任务数量的情况

  • 创建一个固定大小的 goroutine 池,将任务分发给池中的 goroutine 并等待它们完成,使用带缓冲的通道来接收任务,以避免阻塞主线程

    示例

    有生产需求,建议使用大佬写的 ants库 ,以下是模拟协程池的简单示例

    假设,我们有固定数量(2个)工人执行批量(4个)任务

    package mainimport ("fmt""sync")type Task struct {TaskFunc func() interface{}}type WorkerPool struct {Size    intWg      *sync.WaitGroupTasks   chan TaskResults chan Result}type Result struct {ID  intRes interface{}}func NewWorkerPool(workerNum, taskBufSize int) *WorkerPool {return &WorkerPool{Size:    workerNum,Wg:      &sync.WaitGroup{},Tasks:   make(chan Task, taskBufSize),Results: make(chan Result, taskBufSize),}}func (w *WorkerPool) AddTask(task Task) {w.Tasks 

上一篇:明日之后完美服务器怎么进?

下一篇:你知道溥仪登基到现在的详细时间吗?用JS工具js-tool-big-box计算出来