美文网首页
golang技术笔记之channel(信道)

golang技术笔记之channel(信道)

作者: 知本集 | 来源:发表于2018-01-08 10:42 被阅读36次

    信道是什么?

    简单说,是goroutine之间互相通讯的东西。用来goroutine之间发消息和接收消息。

    执行:

    go goTest()
    方法不会触发,因为还没到该方法时,主函数已经退出了。
    需要一个类似join的东西来阻塞住主线。

    创建信道:

    使用make来建立一个信道。

    var channel chan int = make(chan int)

    channel := make(chan int)

    例子:

    var complete chan int = make(chan int)
    func loop() {
    for i := 0; i < 10; i++ {
    fmt.Printf("%d ", i)
    }
    complete <- 0 // 执行完毕了,发个消息
    }

    func main() {
    go loop()
    <- complete // 直到线程跑完, 取到消息. main在此阻塞住
    }

    缓冲信道:并行的;

    非缓冲信道:串行的;

    相关文章

      网友评论

          本文标题:golang技术笔记之channel(信道)

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