go协程读写到底是什么机制 这段代码为什么能按照顺序输出 好奇怪

miaozilong · · 2018 次点击
1. 这段代码为什么能按照顺序输出 而且隔一秒输出一个  不是你代码里面写的 ``` time.Sleep(time.Second)``` ??,你这个 ```var ch = make(chan int)``` 是一个无缓冲的,按照你下面这种写法,相当于是写一个读一个,就是会顺序输出 ``` go task(i) ch <- i ``` 2. 如果睡眠改成 time.Sleep(time.Second * time.Duration(rand.Intn(4))) 就更奇怪了 前几个输出是隔两三秒输出, 后面几个一起输出 随机的吧
#1
更多评论
建议阅读下这篇文章: https://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-channel/
#2