溫課

go語言之goroutine的使用

package main

import (  
    "fmt"  
    "math/rand"  
    "time"  
)

func p() {  
    for i := 0; i < 2; i++ {  
        fmt.Println(i)  
        time.Sleep(time.Second * 1)  
    }
}

func sell(c chan int) {  
    for {  
        num := <-c  
        fmt.Println("sell", num, "bread")  
    }  
}

func produce(c chan int) {  
    for {  
        num := rand.Intn(10)   
        t := time.Duration(num)  
        fmt.Println("product", num, "bread")  
        c <- num  
        time.Sleep(time.Second * t)  
    }  
}

func main() {  
    //go关键字+函数名即可启动一个go routine:  
    go p()  
    var input string  
    fmt.Scanln(&input)  
    fmt.Println("End")  

    //go routine使用channel来进行routine间的通信
    //显示结果也证明,channel的使用规则
    var c chan int = make(chan int)
    go sell(c)
    go produce(c)
    var input2 string
    fmt.Scanln(&input2)
    fmt.Println("end")

}

精彩推薦

我要說兩句
網上嘉賓點評
(沙發已空)