golang 无缓冲 chan

package main

import (
    "fmt"
)

var c = make(chan int)
var str string

func ready() {
    str = "abc"
    fmt.Println("ready1")
    <-c //get
    fmt.Println("ready2")
}

func main() {
    go ready()
    c <- 1 //put
    fmt.Println(str)
}
ready1
ready2//ready2在abc前 是因为调度,没有必然关系
abc

1.对于非缓冲通道:

“从通道接收数据”的操作 一定会在 “向通道发送数据”的操作完成前发生。

2.对于缓冲通道:

“向通道发送数据”操作 一定会在 “从通道接收数据”的操作完成前发生。








本文来自:开源中国博客

感谢作者:咖啡伴侣

查看原文:golang 无缓冲 chan

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。