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

  • 个人出租如何交税
  • 建筑安装服务的发票
  • 编制初始计量有什么要求
  • 用票据付款怎么做账
  • 开票加收税点会减少吗
  • 火车票进项抵扣怎么勾选
  • 计提固定资产折旧时可以先不考虑固定资产残值的方法是
  • 哪些合同不需要缴纳印花税的通知
  • 资金账号和交易账号一样吗
  • 中国银行结算包括哪些内容?怎么做会计分录?
  • 增值税纳税申报表怎么填
  • 年末如何计提企税分录
  • 个税手续费返还计入哪个科目
  • 季报是根据什么制定的
  • 采购原材料未收到发票的会计分录
  • 未取得发票怎么做纳税调增操作
  • 公司注销银行账户流程
  • 工程结算属于哪个类别
  • 企业增值税征收时间
  • 亏损企业季度盈利企业所得税怎么预缴?
  • 小规模纳税人如何交增值税
  • 应收冲预收是什么意思
  • 新版关闭edge地址栏建议
  • php创建二维数组
  • linux桌面设置界面在哪
  • 出口企业免抵退不得抵扣进项
  • 免抵退税会计分录怎么写
  • vue3 计算属性
  • thinkphp6项目
  • php的ajax
  • php调用外部程序
  • 视同销售的行为
  • php照片上传
  • php文件上传用什么请求方法
  • yolov5 教程
  • 基于51单片机的电子秤设计
  • 讯飞智能x2
  • 文心一言 VS ChatGPT
  • sftp命令大全
  • 哪些农产品属于免税
  • 营业税借方表示什么
  • 如何简单去除
  • 现金流量表季度期初现金余额怎么填
  • 增值税的征收范围包括销售不动产
  • 固定资产计提完折旧报废的账务处理
  • 应付职工薪酬账户期末余额可能是
  • 蔬菜和肉类是不是免税
  • 企业应付债券增加说明了什么
  • SQL Server 2005 DTS导入平面数据出现错误解决方案
  • mysql8.0存储过程
  • 收到货款发货了没开发票怎么入账
  • 事业单位借款给下属单位
  • 超过保质期放冰箱还能吃吗
  • 银行存款收入范围有哪些
  • 进账单,其中有两个账户
  • 招标代理公司用哪个版本什么意思
  • 材料核销的依据
  • 预付账款的
  • 存货期末报表列示
  • 小规模纳税人中标一般计税
  • 银行承兑汇票托收凭证
  • mysqldump命令在哪里执行
  • 全国县市区最多的省
  • Ubuntu16.04 server下配置MySQL,并开启远程连接的方法
  • 安装solaris11
  • win10怎么查看windows版本
  • macbookpro怎么删除快捷方式
  • linux shell怎么用
  • nginx sbin目录
  • 我今天抽6
  • vs开发web教程
  • python ar
  • 简单阐述javascript的主要作用
  • unity3d游戏开发笔记本推荐
  • jquery怎么写轮播图
  • 容易混淆的词汇
  • js 自执行
  • 滴滴发票怎么查行程
  • 差旅费的补助计入哪个费用
  • 公司欠税款,还不上,怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设