0109-Go-工作池

环境

  • Time 2022-08-24
  • Go 1.19

前言

说明

参考:https://gobyexample.com/worker-pools

目标

使用 Go 语言的工作池。

示例

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Println("worker", id, "started  job", j)
        time.Sleep(time.Second)
        fmt.Println("worker", id, "finished job", j)
        results <- j * 2
    }
}

func main() {

    const numJobs = 5
    jobs := make(chan int, numJobs)
    results := make(chan int, numJobs)

    // 启动了三个工作任务
    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }

    for j := 1; j <= numJobs; j++ {
        jobs <- j
    }
    close(jobs)

    for a := 1; a <= numJobs; a++ {
        <-results
    }
}

总结

使用 Go 语言的工作池。

附录

posted @ 2022-11-27 19:24  jiangbo4444  阅读(15)  评论(0)    收藏  举报