美文网首页
Golang learning 通道 Chanel

Golang learning 通道 Chanel

作者: wangyongyue | 来源:发表于2019-05-21 17:35 被阅读0次

    通道Chanel 可以连接两个goroutine ,可以让一个goroutine发送特定的值到另外一个goroutine。

    c := make(chan int)  实例int channel 
    go func() {
         c <- 100              给channel赋值100
    }()
    
    a := <- c                  接收channel赋值100
    fmt.Println(a)           打印
    

    channe 有两种形式无缓冲和有缓冲
    无缓冲的,一个线程向channel 发送了消息,直到有其他线程接收消息,否则会一直阻塞当前线程

    c := make(chan int)
    go func() {
         c <- 100             
    }()
    
    a := <- c                 
    fmt.Println(a)         
    

    有缓冲的,可以指定消息数量,如果消息数量大于指定数量,必须有其他线程接收消息,否则阻塞
    c := make(chan int,1)
    go func() {
    fmt.Println("main1")
    c <- 100

    }()
    
    go func() {
        fmt.Println("main2")
        c <- 200
    
    
    }()
    
    a := <- c
    fmt.Println(a)

    相关文章

      网友评论

          本文标题:Golang learning 通道 Chanel

          本文链接:https://www.haomeiwen.com/subject/nwgjzqtx.html