From e7cc691daebb87150f0e6595cf60ac769ebb8dcd Mon Sep 17 00:00:00 2001 From: mayiming <1627832236@qq.com> Date: Fri, 24 Oct 2025 17:28:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=B7=A5=E4=BD=9C=E6=B1=A0?= =?UTF-8?q?=E5=8D=8F=E7=A8=8B=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 协程/工作池/main.go | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/协程/工作池/main.go b/协程/工作池/main.go index c7cd884..561a843 100644 --- a/协程/工作池/main.go +++ b/协程/工作池/main.go @@ -1 +1,44 @@ -package 工作池 +package main + +import ( + "fmt" + "sync" +) + +func Worker(id int, wg *sync.WaitGroup, task <-chan int, result []int, mu *sync.Mutex) { + defer wg.Done() + fmt.Println("worker ", id, "启动!") + for tasks := range task { + tmpres := tasks * tasks + fmt.Println("worker ", id, "计算结果:", tmpres) + mu.Lock() + result[tasks] = tmpres + mu.Unlock() + } +} + +func main() { + const workernum = 10 + const calnum = 1000 + task := make(chan int, 10) + result := [calnum]int{} + var wg sync.WaitGroup + var mu sync.Mutex + for i := 0; i < workernum; i++ { + wg.Add(1) + go Worker(i, &wg, task, result[:], &mu) + } + go func() { + for i := 0; i < calnum; i++ { + task <- i + } + close(task) + }() + wg.Wait() + + for _, value := range result { + fmt.Println("计算结果:", value) + } + fmt.Println("所有任务完成") + +}