Files
h/worker-pool/workerpool.go

22 lines
305 B
Go

package workerpool
import (
"fmt"
)
func WorkerPool[T any](limit int, worker func(int, T)) chan<- T {
tasks := make(chan T, limit)
for i := 1; i <= limit; i++ {
go func(i int) {
defer fmt.Printf("worker:%d done\n", i)
for t := range tasks {
worker(i, t)
}
}(i)
}
return tasks
}