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

  • vivos12前置柔光灯怎么打开(vivos12前置柔光灯直播)

    vivos12前置柔光灯怎么打开(vivos12前置柔光灯直播)

  • 苹果xr和xs有什么区别(苹果xr和xs一样吗)

    苹果xr和xs有什么区别(苹果xr和xs一样吗)

  • 淘宝视频上传尺寸不符合要求怎么办(淘宝视频上传尺寸多大)

    淘宝视频上传尺寸不符合要求怎么办(淘宝视频上传尺寸多大)

  • 永久删除的照片会不会泄漏(永久删除的照片咋恢复手机相册)

    永久删除的照片会不会泄漏(永久删除的照片咋恢复手机相册)

  • 错误码110509是什么意思(错误码110519)

    错误码110509是什么意思(错误码110519)

  • 酷狗为什么不能单曲购买(酷狗为什么不能下载mp3)

    酷狗为什么不能单曲购买(酷狗为什么不能下载mp3)

  • 小米手环腕带断了能售后吗(小米手环腕带断裂用什么胶)

    小米手环腕带断了能售后吗(小米手环腕带断裂用什么胶)

  • ipad出厂自带保护膜吗(ipad保修期)

    ipad出厂自带保护膜吗(ipad保修期)

  • 京东允许一年退货次数(京东买了一年多的产品怎么退)

    京东允许一年退货次数(京东买了一年多的产品怎么退)

  • 闲鱼如何设置为已卖出(闲鱼如何设置为仅见面交易)

    闲鱼如何设置为已卖出(闲鱼如何设置为仅见面交易)

  • 电脑安装软件慢是什么原因(电脑安装软件慢是硬盘读取慢吗)

    电脑安装软件慢是什么原因(电脑安装软件慢是硬盘读取慢吗)

  • 高铁怎么用二维码检票上车(高铁怎么用二维码检票)

    高铁怎么用二维码检票上车(高铁怎么用二维码检票)

  • 域名的主要作用(域名的主要作用是什么)

    域名的主要作用(域名的主要作用是什么)

  • 怎么允许微博访问相机(怎么允许微博访问照片)

    怎么允许微博访问相机(怎么允许微博访问照片)

  • wechat files是什么文件(wechat files里面的filestorage)

    wechat files是什么文件(wechat files里面的filestorage)

  • 如何设置淘宝背景颜色(如何设置淘宝背景图)

    如何设置淘宝背景颜色(如何设置淘宝背景图)

  • oppo悬浮窗口怎么打开(oppo悬浮窗口怎么设置)

    oppo悬浮窗口怎么打开(oppo悬浮窗口怎么设置)

  • vivo iqooneo855有nfc吗

    vivo iqooneo855有nfc吗

  • 快手中戳一下是什么意思(快手中戳一下是什么)

    快手中戳一下是什么意思(快手中戳一下是什么)

  • 有恢复微信聊天记录的软件吗(有恢复微信聊天图片的软件吗)

    有恢复微信聊天记录的软件吗(有恢复微信聊天图片的软件吗)

  • 如何设置抖音视频时间(如何设置抖音视频自动播放)

    如何设置抖音视频时间(如何设置抖音视频自动播放)

  • mate30还是京东方的屏幕吗(京东方和华为)

    mate30还是京东方的屏幕吗(京东方和华为)

  • 电脑分辩率调多少最佳(电脑分辨率调多大)

    电脑分辩率调多少最佳(电脑分辨率调多大)

  • 注册表添加开机启动项(注册表怎么启动)

    注册表添加开机启动项(注册表怎么启动)

  • 湖南省增值税发票图片
  • 应纳税所得额是利润总额吗
  • 建设部门罚款会计分录
  • 上期金额和本期金额是什么意思
  • 税务局买税盘
  • 研究开发费用资本化和费用化
  • 利润表中第3栏营业税金及附加等于什么
  • 土地出让金计算方法
  • 应交税费怎么做分录
  • 公司取出的备用金怎么打税
  • 补发工资个人所得税怎么申报
  • 承包合同范围怎么写
  • 土地增值税清算是什么意思
  • 建筑安装施工过程
  • 企业装修期间开工怎么办
  • 主营业务收入会计分录怎样写
  • 个人独资企业对公账户转个人账户
  • 苹果电脑快捷键删除
  • win10误删系统软件怎么还原
  • Mac怎么禁用icloud
  • 什么是保守型证券
  • 一般纳税人接受固定资产投资时相关的科目可能有
  • 销售黄金的会计分录
  • 电子税务局清算备案能撤销吗
  • php字符串赋值
  • PHP:pg_send_prepare()的用法_PostgreSQL函数
  • 交暖气费可以开单位发票吗
  • dl是什么文件
  • win7安装高版本chrome
  • 产品成本核算方法
  • php缓存机制有哪些
  • 怎么用云服务
  • 工会经费相关问题有哪些
  • 办公室买花卉怎么做分录
  • 递延所得税负债是什么科目
  • 前端框架三大框架
  • php封装app打包
  • 定期定额征收超出3万怎么办
  • 个人个税汇算清缴怎么做
  • 哪些公司不交五险一金
  • 会计实操和实际工作一样吗
  • 融资租赁有免租金吗
  • python命令行如何退出
  • 其他资本公积可以冲减吗
  • java实现打印
  • mysql存储引擎的作用
  • 工会费可以发现金吗
  • 免税收入就是不征收收入,均属于税收优惠范畴
  • 进项税额转出的几种情况
  • 收到货款会计录入
  • 扣除工程款说明
  • 水利税费会计分录
  • 增值税申报销项数据怎么自动带出来
  • 对方公司收钱不开发票怎么办
  • 工会经费按实际发放交还是以计提的
  • 日记账是否必须全部建立
  • sql server 文件
  • u盘装win8系统教程图解
  • 利用()可以对系统进行全面的设置
  • mac打不开以下磁盘映像
  • centos8 apache
  • winxp家庭版和专业版的区别
  • ScanMailOutLook.exe - ScanMailOutLook是什么进程 有什么用
  • 没有触屏如何使手机充电
  • win7电脑关机后自动开机怎么回事
  • json的用法
  • 简述javascript执行原理
  • Node.js中的全局对象有
  • 执行批处理命令
  • jQuery同步提交示例代码
  • jquery示例
  • 关于全局变量和局部变量说法不正确的是
  • mongoose模块有什么用途
  • js行号显示的文字不一样
  • js复制对象的方法有哪几种
  • python如何安装各种库
  • web前端入门教程
  • Android调整按钮位置
  • 税务总局电子申报软件39
  • 如何发挥人才作为第一资源 护理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设