You were getting there.
func worker(ch chan func()) {
// worker needs to read from a channel until channel is closed,
// then it will stop
for work := range ch {
work()
}
}
func main() {
workers := 2
workerChan := make(chan func(), 10)
for i := 0; i < workers; i++ {
// start workers
worker(workerChan)
}
// add work to channel
workerChan <- func() {
// do work
}
}
If you wrap it in a struct, you can make a very general worker pool with it, executing whatever you give to it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…