Go worker并发模式
生活随笔
收集整理的這篇文章主要介紹了
Go worker并发模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Go語言借助于goroutine和channel可以非常方便的處理并發(fā)任務(wù)。
package mainimport "fmt" import "time" // go goroutine func worker(id int, jobs <-chan int, results chan<- int) {for j := range jobs {fmt.Println("worker", id, "started job", j)time.Sleep(time.Second)fmt.Println("worker", id, "finished job", j)results <- j} }func main() {// 定義兩個channel,相當(dāng)于隊列 // jobs接收請求 // results輸出響應(yīng)結(jié)果 jobs := make(chan int, 100)results := make(chan int, 100)// 創(chuàng)建workpool,大小為3,可以理解成線程池 for w := 1; w <= 3; w++ {go worker(w, jobs, results)}// 發(fā)送任務(wù) for j := 1; j <= 5; j++ {jobs <- j}close(jobs)// 得到結(jié)果 for a := 1; a <= 5; a++ {<-results} }
總結(jié)
以上是生活随笔為你收集整理的Go worker并发模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMVC Spring Myb
- 下一篇: Actor并发模型入门