22 lines
305 B
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
|
|
}
|