生成消費(fèi)模式大家在現(xiàn)實(shí)生活中經(jīng)常遇到,如果使用Java編寫可以使用阻塞隊(duì)列如BlockingQueue,Python也有相應(yīng)的組件,如果使用golang編寫使用自帶的channel管道更加簡單。
下面直接看代碼:
package mainimport "fmt"func consumer(ch chan int,done chan string) { for i := range ch{ fmt.Println("recive",i) } done<-"ok"}func product(ch chan int) { for i := 0; i<5; i++{ ch<-i } close(ch)}func main() { fmt.Println("start") ch := make(chan int) done := make(chan string) go consumer(ch,done) go product(ch) <-done}
代碼非常簡單,分別用goroutine啟動(dòng)兩個(gè)協(xié)程:生產(chǎn)和消費(fèi)。共享ch,一個(gè)往管道中寫數(shù)據(jù)一個(gè)往管道中讀數(shù)據(jù),done是為了讓主進(jìn)程等待消費(fèi)者結(jié)束。
聯(lián)系客服