golang开发中channel使用
channel使得并发编程变得简单容易有趣。一个channel可以理解为一个先进先出的消息队列。channel用来在协程[goroutine]之前传递数据,准确的说,是用来传递数据的所有权。意思跟方向是一致的,一个是数据进入channel,一个是数据从channel出去我们一直使用的无缓冲的channel,今天主要学习下有缓存的channel。有缓冲的channel,可以写入缓冲大小个数据,可以没有goroutine从channel读取。但是我们如果使用了有缓冲的channel,就可以利用channel的缓冲机制正常退出全部的goroutine了。打印success的时候,第一个goroutine已经将任务完成,循环9次将channel里面的数据读取出来,保证创建的goroutine都不会阻塞能够正常退出来。
下载地址
用户评论