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

  • 华为荣耀9x充电指示灯在哪(华为荣耀9x充电器多少瓦)

    华为荣耀9x充电指示灯在哪(华为荣耀9x充电器多少瓦)

  • 三星s9什么时候更新安卓10(三星s9+参数配置)

    三星s9什么时候更新安卓10(三星s9+参数配置)

  • 怎么看手机定位是不是北斗(怎么看手机定位去过哪里)

    怎么看手机定位是不是北斗(怎么看手机定位去过哪里)

  • 抖音里共同联系人是通讯还是微信(抖音里共同联系人也赚钱吗)

    抖音里共同联系人是通讯还是微信(抖音里共同联系人也赚钱吗)

  • 华为nova7和荣耀30s对比(华为nova7和荣耀30的区别)

    华为nova7和荣耀30s对比(华为nova7和荣耀30的区别)

  • 魅族17pro充电功率(魅族17pro充电问题)

    魅族17pro充电功率(魅族17pro充电问题)

  • 苹果11双摄像头为什么只有一个可以用(苹果11双摄像头怎么使用)

    苹果11双摄像头为什么只有一个可以用(苹果11双摄像头怎么使用)

  • 手机怎么长时间录视频(手机怎么长时间录音)

    手机怎么长时间录视频(手机怎么长时间录音)

  • flypods充电要关盖子吗(flypods需要关机吗)

    flypods充电要关盖子吗(flypods需要关机吗)

  • 能不能知道群是谁举报的(群聊是不是可以查看谁不是好友)

    能不能知道群是谁举报的(群聊是不是可以查看谁不是好友)

  • 华为荣耀10可不可以录屏(华为荣耀10可不可以投屏)

    华为荣耀10可不可以录屏(华为荣耀10可不可以投屏)

  • 红米手机为什么录屏的时候没有声音怎么办(红米手机为什么总是自动关机)

    红米手机为什么录屏的时候没有声音怎么办(红米手机为什么总是自动关机)

  • 苹果xr怎么提高4g网速(苹果xr怎么提高像素)

    苹果xr怎么提高4g网速(苹果xr怎么提高像素)

  • 怎么查看ipad是几代(怎么查看ipad是不是翻新机)

    怎么查看ipad是几代(怎么查看ipad是不是翻新机)

  • ps怎么画同心圆

    ps怎么画同心圆

  • 苹果怎么锁相册加密(苹果怎么锁相册照片)

    苹果怎么锁相册加密(苹果怎么锁相册照片)

  • 手机qq怎么备注(手机QQ怎么备注图片)

    手机qq怎么备注(手机QQ怎么备注图片)

  • 键盘长度一般多少cm(键盘长度一般多少寸)

    键盘长度一般多少cm(键盘长度一般多少寸)

  • qq怎么把文件发到手机(qq怎么把文件发送到邮箱)

    qq怎么把文件发到手机(qq怎么把文件发送到邮箱)

  • 笔记本网卡坏了(联想笔记本网卡坏了)

    笔记本网卡坏了(联想笔记本网卡坏了)

  • 抖音闪一下特效怎么用(抖音特效一闪一闪怎么弄)

    抖音闪一下特效怎么用(抖音特效一闪一闪怎么弄)

  • 华为手机能定位苹果手机吗(华为手机能定位小米手机位置吗)

    华为手机能定位苹果手机吗(华为手机能定位小米手机位置吗)

  • 索尼xperia1怎么设置息屏时间

    索尼xperia1怎么设置息屏时间

  • 快手必须挂小黄车吗(快手挂小黄车有什么要求吗)

    快手必须挂小黄车吗(快手挂小黄车有什么要求吗)

  • 苹果12.2什么时候更新(苹果12.2版本什么时候出来的)

    苹果12.2什么时候更新(苹果12.2版本什么时候出来的)

  • 怎么把快手音乐设置成自己的原声(怎么把快手音乐设置成微信铃声)

    怎么把快手音乐设置成自己的原声(怎么把快手音乐设置成微信铃声)

  • qq怎么看以前的说说(qq怎么看以前的匿名消息)

    qq怎么看以前的说说(qq怎么看以前的匿名消息)

  • 收到退个税手续费要交增值税吗?
  • 代扣个人借款分录
  • 不得公开发行股票的情形
  • 增值税和个人所得税都要交吗
  • 应收账款的账面价值和账面余额的区别
  • 应收票据属于其他应收账款吗
  • 资产负债表里是科目还是项目
  • 暂估入库必须次日入库吗
  • 持有待售固定资产按照账面价值与可收回金额
  • 无法收回的应收款计入什么科目
  • 对赌协议如何进行管理
  • 哪些进项税不能转出
  • 筹建期装修费用计入什么科目
  • 印花税计入股票成本吗
  • 房产交易会涉及哪些费用
  • 员工看病报销要计税吗
  • 应收账款的产生之一是由于销售
  • 进口应税消费品的组成计税价格公式
  • 员工股权激励会计处理分录
  • 委托贷款利息收入增值税
  • 设计服务交文化建设税吗
  • 财务费用年末有余额吗
  • 权益法核算下的顺流交易
  • 建账时的库存怎么做账
  • 存贷款基准利率和lpr
  • 摊销房租怎么做账
  • amr文件什么意思
  • 拆迁地下室
  • 差旅费涉及的科目
  • svchost一直在下载什么
  • 固定资产改造后如何计提折旧
  • 土地增值税的收费标准
  • 2023年生活性服务业加计扣除
  • 转让技术所有权计入什么科目
  • yolov3原理及代码解析
  • php中验证码如何实现登录验证
  • showmount命令安装
  • php微信公众号获取带参二维码
  • 软件的摊销期限
  • 狂神说css笔记
  • 给最爱的他
  • 与下级往来账户贷方核算的内容有
  • 现金流量表里的其他指的是什么
  • 织梦发布文章栏目怎么不显示
  • 银行借记和贷记一样吗
  • mysql1290报错
  • 收到现金存款
  • 转让股权收入属于收入总额吗
  • 股东所有者权益负数
  • 收电商费会判刑吗
  • 促销有哪几个方面
  • 什么是长期的
  • 开个人普票需要身份证吗
  • 财务工作交接的通知
  • 编制合并报表时最关键的一步
  • 会计凭证的主要种类
  • sql查询速度慢如何优化
  • Vista下以真正的管理员登陆的设置方法
  • windows vista如何升级
  • win8.1的开始菜单在哪
  • 苹果Mac系统怎么装
  • macos 网速慢
  • 微软推送win11
  • windows8.1应用商店打不开
  • win8如何免费升级win10
  • perl怎么把字符串变为数字
  • css怎么控制图片位置
  • jq获取url
  • go 与 python
  • 功能强大的英语
  • Node.js发送HTTP客户端请求并显示响应结果的方法示例
  • unity3d游戏开发标准教程pdf
  • Unity3D游戏开发毕业论文
  • javascript如何学
  • js闭包的使用
  • 安卓微信仿ios版
  • 用python做一个贪吃蛇
  • 新疆税务局电子
  • 机票的抵扣率是多少
  • 全国企业信用信息系统网官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设