位置: 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的两种方式

  • 去年企业所得税税率是多少
  • 生产设备保险费会计分录
  • 国际货运代理一个月大概有多少收入
  • 金税盘锁死日期16号几点
  • 定额怎么确定
  • 无形资产的出售的会计处理
  • 环保税退税优惠政策
  • 产权转移书据印花税分录
  • 房屋租赁收入如何征税?
  • 企业缴纳的财产保险费会计分录
  • 预付了订金收到发票怎么做分录?
  • 用外购存货投资分录怎么写?
  • 质量保证产品一般是指
  • 不得抵扣且未抵扣什么意思
  • 不开票的收入怎么办
  • 民办学校会计分录 百度网盘
  • 分支机构年度终了必须由总机构负责合并汇总纳税吗?
  • 维修进水的笔记怎么写
  • win7为什么不能安装软件
  • 为什么wifi有信号没网络
  • 事业单位研究开题报告
  • 收到保险公司车辆保险发票会计分录
  • php测验
  • php怎么与mysql连接
  • 摊销无形资产会影响无形资产的账面价值吗
  • php数据库连接池 实例
  • 施工单位代建收费标准
  • 房地产开发企业增值税怎么算
  • 公允价值变动损益属于什么科目
  • 出口发票的开具时间问题
  • dmsetup remove_all 会不会清掉数据
  • 产权转移数据印花
  • 国际货运代理公司排名
  • 存货非正常损失的会计处理
  • 企业亏损了
  • 印花税购销合同包括哪些
  • 银行对账单电脑上怎么导出
  • 非税收入票据存根的保存期限一般为多少年
  • 设备转固的前提条件
  • 期末余额就是本年累计吗
  • 库存现金怎么做预算会计
  • 无法收回的应收账款怎么做分录
  • 拒收发票需要拒收证明么
  • 汇兑损益财务费用借方
  • 公司买车可以少多少钱
  • 固定资产入账要发票吗
  • 应计利息是什么类科目核算
  • 半年净资产收益率
  • 电子承兑汇票的承兑人是谁
  • 免税企业开了含税吗
  • 货已经收到未收到怎么办
  • 购货方与付款方不一致
  • 生产型企业年终奖发放方案
  • 餐饮行业的原材料怎么做账
  • 政府机关有纳税人吗
  • 微软官方win10启动盘
  • macos sierra怎么样
  • linux系统中命令什么大小写
  • 怎么设置虚拟硬盘储存路径
  • win7自动更新在哪
  • win7开机没反应怎么办
  • win7如何录制电脑屏幕
  • linux whoami命令详解
  • win10使用入门教程
  • win7系统怎么设置浏览器主页
  • windows8快捷键
  • perl 字符串处理
  • shell字符串截取加替换
  • bash 字符串操作
  • Div CSS absolute与relative的区别小结
  • angular ...
  • unity strangeioc
  • vue如何用
  • android应用程序的主要语言是
  • android按钮怎么放置在下方
  • 运用python编写程序
  • recyclerview stableid
  • jquery设置div的宽度和高度
  • 费减备案合格后怎么操作?
  • 重庆公交司机收入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设