1package main
2
3import (
4 "fmt"
5 "sync"
6)
7
8type Job struct {
9 ID int
10 Data interface{}
11}
12
13type Result struct {
14 JobID int
15 Output interface{}
16 Err error
17}
18
19func workerPool(numWorkers int, jobs <-chan Job, results chan<- Result) {
20 var wg sync.WaitGroup
21
22 for i := 0; i < numWorkers; i++ {
23 wg.Add(1)
24 go func(workerID int) {
25 defer wg.Done()
26 for job := range jobs {
27 result := processJob(job)
28 results <- result
29 }
30 }(i)
31 }
32
33 go func() {
34 wg.Wait()
35 close(results)
36 }()
37}
38
39func processJob(job Job) Result {
40 // 실제 작업 처리 로직
41 return Result{
42 JobID: job.ID,
43 Output: fmt.Sprintf("processed job %d", job.ID),
44 }
45}