位置: IT常识 - 正文

Go 语言入门 1-管道的特性及实现原理(go语言ui)

编辑:rootadmin
入坑 go 也快一年了,从今天开始会定期分享一下 Go 语言学习过程中的一些基础知识。 go 语言中的管道, 主要是用于协程之间的通信, 比 UNIX 的管道更加轻量和易用。 我们先看一下管道的数据结构: type hchan struct { gcount uint // 环形队列剩余元素个数 d ...

推荐整理分享Go 语言入门 1-管道的特性及实现原理(go语言ui),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:go 语言 gui,go 语言 gui,go 语言 gui,go语言 _,go语言从入门到实战,go语言基础入门,go 语言 gui,go语言入门指南,内容如对您有帮助,希望把文章链接给更多的朋友!

入坑 go 也快一年了,从今天开始会定期分享一下 Go 语言学习过程中的一些基础知识。

go 语言中的管道, 主要是用于协程之间的通信, 比 UNIX 的管道更加轻量和易用。

我们先看一下管道的数据结构:

type hchan struct {gcountuint//环形队列剩余元素个数dataqsizuint//环形队列长度bufunsafe.Pointer // 环形队列指针elemsizeuint16 // 每个元素大小closeduint32//标识关闭状态elemtype*_type// 元素类型sendxuint//下一个元素写入时的下标recvxuint//下一个元素读取时的下标recvqwaitq // 等待读消息的队列sendqwaitq // 等待写消息的队列lockmutex//互斥锁,保障管道无法并发读写}

源码链接:

https://github.com/golang/go/blob/0d0193409492b96881be6407ad50123e3557fdfb/src/runtime/chan.go#L33

通过上述数据结构, 我们可以理解管道是由三部分组成的:

Go 语言入门 1-管道的特性及实现原理(go语言ui)

环形队列

读写等待队列

队列元素基本信息

从管道读取数据时, 如果管道缓冲区为空或者没有缓冲区, 那么当前协程就会阻塞, 然后放入 recvq 队列中。

往管道写入数据时,如果管道缓冲区为空或者缓冲区满了,那么当前协程就会阻塞, 然后放入 sendq 队列中。

读阻塞的协程会被新来的写数据的协程唤醒。

写阻塞的协程会被新来的读数据的协程唤醒。

同时上述数据结构中, 我们可以看到一个管道中只能传递一种元素类型。如果想数据类型动态化, 可以传递 interface。

管道的操作:

初始化有两种方式:

变量

本文链接地址:https://www.jiuchutong.com/zhishi/311844.html 转载请保留说明!

上一篇:【HDLBits刷题日记】05 More Verilog Features(高效刷题app)

下一篇:Spring(十五):Spring整合MyBatis的两种方式

  • 以旧换新销售商品
  • 股东撤资涉及到哪些税如何缴纳?
  • 购买土地的契税怎么计算
  • 支付电费未开具发票
  • 冲红的发票税款计提分录要冲红吗
  • 建筑企业结转成本怎么算
  • 自产货物用于本企业在建工程交增值税不
  • 招待用烟的会计处理
  • 外企餐补标准
  • 行政单位现金日记账填写样本
  • 领备用金时会计怎么做分录
  • 施工企业已完工程成本如何结转
  • 车辆租赁合同印花税怎么算
  • 美国边境管理体制
  • 我的初级备考经验怎么写
  • 增值税发票附表
  • 小微企业工会
  • 承兑汇票如何背书转让
  • Win11怎么关闭自动休眠
  • 如何使用php
  • 建筑行业怎么做职业生涯规划
  • 财务费用为什么增加
  • 如何计算企业所得税税负
  • 跨省异地施工
  • php常用的魔术方法有哪些
  • 进项税可以留底多长时间
  • 拥有自我意识的动物有哪些
  • 会计有哪几种
  • 员工借款能直接从公司账上转么
  • 交易性金融资产的入账价值
  • 刷题有什么作用
  • box-sizing:border-box的理解和作用
  • java泛型E和T
  • 建筑企业增值税税率是多少
  • 企业需要交哪些税种?分别怎么交
  • mongodb 统计
  • 代扣代缴个人所得税分录
  • 如何查询发票领购日期
  • sql2008混合模式
  • 自产产品对外捐赠为什么不确认收入
  • 房地产企业进项税抵扣的时间
  • 零售业赠送给别人怎么做
  • 库存商品与存货总额之比
  • 增值税相关的问题
  • 企业股东的出资方式
  • 注册资本越多越好吗
  • win10怎么获取
  • linux awk -v
  • 在windows中用户建立的文件默认具有的属性是
  • 怎么更改桌面图标字体
  • win8升级win10补丁
  • 电脑操作系统7
  • win8.1技巧
  • 防止linux断电系统崩溃
  • win7唤醒后屏幕黑屏
  • win7能玩的老游戏
  • linux 文件数量 命令
  • cocos2dx 3.4 Label中文显示
  • 深入理解llvm
  • jquery源码是什么水平
  • windows批处理命令教程
  • unity 更新
  • 物理引擎演示
  • python语言文件
  • pythonipo模型
  • 延时加载js文件
  • python内建函数 代码
  • javascript巧用eval函数组装表单输入项为json对象的方法
  • jquery插件是干什么的
  • 浙江省国税电子税务局如何新增企业
  • 企业自建旧房产怎么处理
  • 电子税务局电子送达文书怎么签收
  • 彩票中奖归出钱人还是中奖人
  • 房产税季度缴纳几号之前
  • 江苏省电子税务局怎么添加办税人员
  • 重点税源企业税收分析报告
  • 中国的消费税是怎么算的
  • 2021河南税务政策
  • 税收与税务的区别是什么
  • 徐州国税局班子成员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设