menu

golang实现简单的woker工作池

  • date_range 17/09/2020 03:00 info
    sort
    notes
    label
    notes

使用golang实现简单的worker工作池。 指定worker数量,避免创建过多的Goroutine

    var workerChan chan int = make(chan int ,4) //指定worker数量
    var wg = sync.WaitGroup{}
    func main() {
        //模拟10个任务
        for i:=1;i<=10;i++{
            wg.Add(1)
            workerChan<-i
            go exec(i)
        }
        wg.Wait()
        log.Println(`end`)
    }

    //执行任务
    func exec(i int){
        defer func() {
            <-workerChan
            wg.Done()
        }()
        time.Sleep(1*time.Second)
        log.Println(i)
    }