常見模式之二:使用時順序模式
定義
顧名思義,起初goroutine不管是怎么個先后順序,等到要使用的時候,需要按照一定的順序來,也被稱為未來使用模式
使用場景
-
每個goroutine函數都比較獨立,不可通過參數循環復用
-
任務各自獨立,結果組合依賴順序
示例
package mainimport ("fmt""time"
)func grepMySQL() <-chan string {res := make(chan string)go func() {time.Sleep(time.Millisecond * 30)res <- "grep data from MySQL"}()return res
}func grepSQLServer() <-chan string {res := make(chan string)go func() {time.Sleep(time.Millisecond * 10)res <- "grep data from SQLServer"}()return res
}func grepRedis() <-chan string {res := make(chan string)go func() {time.Sleep(time.Millisecond * 20)res <- "grep data from Redis"}()return res
}func main() {mysqlRes := grepMySQL()sqlServerRes := grepSQLServer()redisRes := grepRedis()// 數據排序規則是 redis -- mysql -- sqlServerresArr := []string{<-redisRes,<-mysqlRes,<-sqlServerRes,}fmt.Println(resArr)
}