PHP中高级工程师面试重点讲解视频课程
Go快速入门浅显易懂视频教程-基础篇
Go快速入门浅显易懂视频教程-中级篇
go的routine使用
阅读:1513 分享次数:0

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")

}



感觉本站内容不错,读后有收获?