go语言 - golang对channel的使用,可以类比现实生活中的什么情景?

查看:109
本文介绍了go语言 - golang对channel的使用,可以类比现实生活中的什么情景?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

本人是golang萌新,第一次接触channel,有点抽象,也没怎么接触过c/c++,请问日常生活中,有什么可以类比的呢?

解决方案

可以类比到生活中的管道或者是流水线传送带,channel可以写入或者读取,channel写入的时候就像是往传送带上放入货物,读取channel就像是从传送带上取货物。
channel分为buffered和立即阻塞的,取决于你是如何初始化这个channel的:
缓冲channel:

var c = make(chan int,10)

这样的channel就像容量为10的传送带,上面可以放10个货物,如果放满了,就不能再放了(go程阻塞),只能等取走之后才可以继续放(go程继续执行)。
而非缓冲的channel:

var c = make(chan int)

这样的channel就像就只能放1个货物传送带,放入货物直到这个货物被取走,这个工作流程都是停止(阻塞)在这里的。在goroutine中的表现就是该go程被阻塞。

这篇关于go语言 - golang对channel的使用,可以类比现实生活中的什么情景?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆