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

  • 独资企业赚的钱全是老板的吗
  • 附加税计税依据文件
  • 绿化税票多少税率
  • 处置其他权益工具投资时,应按取得的价款
  • 支票罚金
  • 公司清算关闭程序
  • 专用发票跨年度能入账吗
  • 股东收取了公司的货款
  • 固定资产备案怎么备案
  • 电子商务平台支付的区别
  • 买二手车年限久的会怎样
  • 重疾险可以扣税吗
  • 普通纳税人的条件
  • 个人名义去税务局开票
  • 发票代码不是10位,怎么提示输入12位的
  • 房产评估增值部门有哪些
  • 残保金逾期未申报的税务怎么处理
  • 职工福利费进项税转出怎样做账务处理
  • 暂停装修
  • win7系统输入法切换快捷键
  • macbook和ipad怎么互通屏幕
  • macbook隐藏
  • 车间闲置固定资产怎么算
  • 长春花怎么养才能爆花
  • PHP:mdecrypt_generic()的用法_Mcrypt函数
  • 工会经费申报表填写说明
  • php获取ipv6地址
  • php上传文件类型
  • 基于专业性的家校双向互动,需要家长的学校教育参与
  • css动画效果代码
  • react脚手架搭建项目
  • 进项税额转出是好事还是坏事
  • 网站top排行榜
  • 应收账款保理会计处理相关会计准则
  • 教育局是一般纳税人吗
  • 印花税与增值税有什么区别
  • 在建工程明细科目有土地使用权摊销吗
  • 小规模纳税人开票额度
  • 出租车发票可以重新打印吗
  • 社保工伤保险可以退吗
  • sqlserver如何使用
  • 企业增值税申报流程
  • 异地设立分公司怎么办理?
  • 申报要补税怎么办
  • 应收票据周转率公式
  • 增值税发票税率计算公式
  • 增值税免征印花税怎么算
  • 废料进口报关
  • 运输公司的固定资产清单
  • 收到预付卡的发票是否可以报销呢?
  • 备用金存回银行
  • 还没有开业的公司怎么样
  • Windows10下MySQL5.7.19安装教程 MySQL忘记root密码修改方法
  • ubuntu怎么禁用nouveau
  • linux切换到home文件夹
  • bios设置u盘启动顺序
  • Mac如何使用Excel
  • win8怎么更改密码
  • cocos2djs
  • drawcalls2000多
  • shell脚本运行linux命令
  • bat批处理字符串转ascii10进制规避特殊字符
  • cocos2dx游戏开发
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • 批处理自动关机命令
  • unity的协程
  • 基于豆瓣电影数据linux
  • jquery dom对象
  • android 自定义linearlayout 宽度计算不对
  • android中menu
  • Javascript字符串出现次数
  • jquery 插件写法
  • jquery插件是干什么的
  • python *.py
  • 山西地方税务局领导班子
  • 工会经费税务代收现状
  • 河南车船税缴纳查询网
  • 车辆购置税怎样做账
  • 什么是财务审计
  • 社保工资申报错了可以重新申请吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设