這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
In this example we'll look at how to implement a worker pool using goroutines and channels
package mainimport ( "fmt" "time")func worker(id int, jobs <-chan int, result chan<- int) { for j := range jobs { fmt.Println("worker", id, "processing job", j) time.Sleep(time.Second) result <- j * 2 }}func main() { jobs := make(chan int, 100) result := make(chan int, 100) for w := 1; w <= 3; w++ { go worker(w, jobs, result) } for j := 1; j <= 9; j++ { jobs <- j } close(jobs) for a := 1; a <= 9; a++ { fmt.Println("<-result", <-result) }}
worker 1 processing job 1worker 2 processing job 2worker 3 processing job 3worker 1 processing job 4worker 2 processing job 5worker 3 processing job 6<-result 2<-result 4<-result 6worker 1 processing job 7worker 2 processing job 8worker 3 processing job 9<-result 8<-result 10<-result 12<-result 14<-result 16<-result 18
總結 :
1 : ....