worker a year ago
package main
import "log"
type Worker struct {
in chan int
done chan bool
}
func main() {
var workers [10]Worker
for i := 0; i < 10; i++ {
workers[i] = createWorker(i)
}
for i, w := range workers {
w.in <- 'a' + i
}
for j, w := range workers {
w.in <- 'A' + j
}
for _, w := range workers {
<-w.done
<-w.done
}
}
func doWork(id int, worker Worker) {
for c := range worker.in {
log.Printf("worker %d received %c\n", id, c)
go func() {
worker.done <- true
}()
}
}
func createWorker(n int) Worker {
w := Worker{
in: make(chan int),
done: make(chan bool),
}
go doWork(n, w)
return w
}
运行3次:
- 上一篇: goland 批量替换字符串
- 下一篇: 关于for select case