go语言之goroutine的使用

字号+ 编辑: 呆头鹅甲 修订: 呆头鹅甲 来源: 利志分享 2015-02-07 11:49:18 我要说两句(0)

通过代码说明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")

}
阅完此文,您的感想如何?
  • 鼓掌

    0

  • 鄙视

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.转来的文章都会标好来源,如对来源资料存疑,请邮件声明;
2.本站标注原创的文章,转发时烦请注明来源;
3.如文章侵犯了您的版权,请通知本站,该文章将在24小时内移除。

相关课文
  • go在arm上读取串口数据

  • Go语言框架之对比

  • go调用c使用比官方Cgo性能更加突出的c2goasm项目

  • Go语言截取指定字符串中间字符串的方法

我要说说
网上宾友点评