分享
golang 无缓冲 chan
咖啡伴侣 · · 4112 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
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.对于缓冲通道:
"向通道发送数据"的操作 一定会在 "从通道接收数据"的操作完成前发生。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信4112 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
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.对于缓冲通道:
"向通道发送数据"的操作 一定会在 "从通道接收数据"的操作完成前发生。