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

  • 耕地占用税的税目
  • 当月认证发票进项税转出能不能第二个月转出
  • 城市维护建设税是什么意思
  • 转出未交增值税借方
  • 汽车装饰属于什么服务
  • 小规模纳税人能抵扣进项发票吗
  • 税务1236600短信
  • 新办企业能否享受留抵退税
  • 跨区经营怎么交税
  • 哪些补贴可以不交个税
  • 个人保证金业务
  • 协议报价税率与开出的发票不一致怎么办?
  • 教育附加费和地方教育附加费的计算
  • 小微企业免征增值税的账务处理
  • 去新建的外贸公司好不好
  • 预付账款讲解
  • 一般企业的会计原始凭证有哪些类型
  • 固定资产弃置费用预计负债
  • 外籍人士可以回国吗
  • 事业单位财政应返还额度包括
  • 电脑插上u盘
  • mac u盘
  • 设备计提折旧的方法
  • win7 excel
  • 私车公用的费用可以抵税吗现在
  • sfx.exe
  • lmgrd.exe是什么进程
  • 发放员工奖励
  • 出口退税是怎么个流程
  • laravel auth:api
  • 企业合并一般债权怎么算
  • 资产负债表利润表和现金流量表
  • cvpr2023最佳论文
  • php图片库
  • linux系统中安装auto dock
  • apt apt-get aptitude
  • /f命令
  • 样品属于存货吗
  • Linux常用命令与vim
  • phpcms v9用户手册
  • 帝国cms下载
  • sqlsever无法连接到服务器
  • 税务新增办税人员
  • 商誉的会计核算怎么核算
  • 企业资产评估后多久上市
  • 公司开一般户和基本户开哪个好
  • 收款金额比开票金额多怎么处理
  • 金税四期的政策
  • 暂估入库的会计分录怎么写
  • 民办非盈利组织注销了在哪登报
  • 非营利性养老院收费标准一般是多少
  • 失控发票补交上年所得税
  • 公司私账银行流水
  • 固定资产多入账怎么写情况说明
  • 出口抵减内销产品应纳税额在借方
  • 外贸企业汇兑损益如何减少
  • 商业地产会计账务怎么做
  • 事业编制可以带计算器吗
  • 累计摊销可以做什么分录
  • 挂靠收入如何做账处理?
  • centos如何更新内核
  • 微软正式推送windows11
  • datadraveler
  • fedora系统安装软件
  • mce文件是什么软件
  • win8小键盘怎么打开
  • linux桌面设置界面在哪
  • win10笔记本键盘失灵按什么键恢复
  • cocos2dx 教程
  • 深度缓冲
  • js动态添加dom
  • js 字符编码
  • js注释方法
  • nodejs使用express
  • vue中怎么引入css
  • jquery怎么打开
  • java script教程
  • android隐藏图片
  • 税务机关垂直领导
  • 四川区划调整公示最新
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设