標籤:
今天給大家講解下go語言開多進程。
package mainimport ( "fmt" "time")var c chan intfunc main() { c = make(chan int) go waiting("coffee", 1) go waiting("tea", 2) fmt.Println("I,am waiting") //time.Sleep(3 * time.Second) <-c <-c}func waiting(w string, sec int) { time.Sleep(time.Duration(sec) * time.Second) fmt.Println(w, "is ready") c <- 1}
如果進程開的比較多,怎樣去避免去寫多個結束進程的channel,下面我來給大家發下改進版:
package mainimport ( "fmt" "time")var c chan intfunc main() { c = make(chan int) go waiting("coffee", 1) go waiting("tea1", 2) go waiting("tea2", 3) go waiting("tea3", 4) go waiting("tea4", 5) go waiting("tea5", 6) go waiting("tea6", 7) fmt.Println("I,am waiting") //time.Sleep(3 * time.Second) i := 0L: for { select { case <-c: i++ if i > 6 { break L } } }}func waiting(w string, sec int) { time.Sleep(time.Duration(sec) * time.Second) fmt.Println(w, "is ready") c <- 1}
go語言怎樣開多進程圖文講解。