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

  • 怎么查19年以前税收
  • 税后利息税怎么算
  • 无法支付的应付账款需要交增值税吗
  • 小规模企业现金流量表
  • 公司工资0申报
  • 公司公积金缴纳比例一般来说是多少?
  • 刚成立的公司好不好
  • 固定资产转固后发现少转费用了怎么办
  • 股东投入的资金怎么做账
  • 土地增值税清算的条件
  • 税务登记注销前异常项目类型非强制什么意思
  • 现金存入银行会计摘要怎么写
  • 专项产资金支出要怎么做分录?
  • 人工费收税吗
  • 注册资本增资印花税减半
  • 进项税额抵扣的情况有哪些
  • 财会【2016】22号文
  • 维修费用的税率
  • 保险代理的佣金怎么算
  • 什么是季初值和季末值
  • 准则大家学第十二集
  • 环评公司的成本核算
  • 非直系亲属继承房产后再卖掉后交税吗
  • 企业名称变更后社保也要变更吗
  • 合并报表利润表是当期还是累计
  • 个人劳务费增值税税率是多少2023
  • 咨询费属于什么大类
  • 不能抵扣的进项发票怎么做分录
  • windows10命令提示符怎么用
  • 鸿蒙侧边菜单
  • windows10如何关闭病毒和威胁防护设置
  • 农作物种植销售
  • win10excel闪退是什么原因
  • 政府的奖励金计入哪个科目
  • 将自产的应税消费品用于非应税项目
  • 汇付的注意事项有哪些内容
  • Javascript Object和Map之间的转换
  • php字符转换成数字
  • php中实现文件上传的函数是什么
  • PHP:mcrypt_enc_self_test()的用法_Mcrypt函数
  • 员工安置费标准出台
  • 购买性支出和转移性支出的区别可以归纳为()
  • 外商投资企业 外资企业
  • php用户登录界面
  • 微信小程序图片大小如何设置
  • 小规模纳税人增值税超过30万怎么纳税
  • mysql5.7.23安装配置教程
  • 购买项目用设备计入什么科目
  • 购买礼品送客户取得普票怎么做账
  • 企业现金流量表怎么分析
  • 外贸常用的付款方式有哪些
  • 固定资产出售通过什么科目
  • 本年利润每个月需要结转吗
  • 报名费无发票要补交吗
  • 商品验收入库时怎么做账
  • 待结算财政款项是什么科目
  • 未开票收入如何记账
  • 服务类公司有成本吗
  • sql server 错误
  • windows server 开始菜单
  • xp系统如何加速
  • nfs安装配置
  • win7删除未识别的网络
  • Ubuntu 16.04 64位中搭建Node.js开发环境教程
  • 火狐浏览器自定义滚动条
  • 浏览器复制插件在哪
  • jquery可以实现哪些效果
  • 远程计算机的命令
  • jquery绑定事件和移除事件
  • python第六章函数
  • linux中的tree
  • javascript总结笔记
  • jquery fadein不起作用
  • python找出n个数里最小的k个
  • 浅谈编码,解码的意义
  • 河南电子税务局开票流程
  • 辽宁省国家税务局电话
  • 电子税务局如何下载财务报表
  • 广东发票查询真伪网站
  • 云南省税务局咨询电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设