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

  • 四川健康码旅行熊猫怎么领(四川健康码旅行熊猫图片)

    四川健康码旅行熊猫怎么领(四川健康码旅行熊猫图片)

  • 微信怎么同时登录两个号

    微信怎么同时登录两个号

  • 华为荣耀8x手机多大尺寸(华为荣耀8x手机u盘在哪里打开)

    华为荣耀8x手机多大尺寸(华为荣耀8x手机u盘在哪里打开)

  • 华为荣耀8x手机屏幕几英寸(华为荣耀8x手机怎么样)

    华为荣耀8x手机屏幕几英寸(华为荣耀8x手机怎么样)

  • qq标识amigo什么意思(qq标识ary)

    qq标识amigo什么意思(qq标识ary)

  • 三星s10耳机控制不了三星音乐(三星s10耳机无法控制音量大小)

    三星s10耳机控制不了三星音乐(三星s10耳机无法控制音量大小)

  • 华为p20能升级安卓10吗(华为p20可以升级)

    华为p20能升级安卓10吗(华为p20可以升级)

  • ipad闪光灯怎么开(ipad闪光灯怎么开拍照)

    ipad闪光灯怎么开(ipad闪光灯怎么开拍照)

  • 微信账号异常多久恢复(微信账号异常多久能恢复正常)

    微信账号异常多久恢复(微信账号异常多久能恢复正常)

  • typec充电口发烫不充电(充电线typec发热)

    typec充电口发烫不充电(充电线typec发热)

  • 快手是什么时候推出的(快手是什么时候开发的)

    快手是什么时候推出的(快手是什么时候开发的)

  • 多模光纤传输光信号的原理是(多模光纤传输距离为多少km)

    多模光纤传输光信号的原理是(多模光纤传输距离为多少km)

  • 怎么把歌设置为来电铃声(怎么把歌设置为苹果来电铃声)

    怎么把歌设置为来电铃声(怎么把歌设置为苹果来电铃声)

  • 华为mate30快充设置(华为mate30快充怎么设置)

    华为mate30快充设置(华为mate30快充怎么设置)

  • 虚拟局域网的工作原理(虚拟局域网的工作原理实验报告)

    虚拟局域网的工作原理(虚拟局域网的工作原理实验报告)

  • 抖音认证什么意思(抖音认证是怎么回事)

    抖音认证什么意思(抖音认证是怎么回事)

  • 华为手机微信照片怎么保存到相册(华为手机微信照片怎么保存不到相册)

    华为手机微信照片怎么保存到相册(华为手机微信照片怎么保存不到相册)

  • ie8及以上的浏览器有哪些(ie8以上的浏览器那些设置)

    ie8及以上的浏览器有哪些(ie8以上的浏览器那些设置)

  • 微信发送位置可以弄假吗(微信发送位置可以看到实时位置吗)

    微信发送位置可以弄假吗(微信发送位置可以看到实时位置吗)

  • 华为手机怎么安装两个微信(华为手机怎么安装电话卡)

    华为手机怎么安装两个微信(华为手机怎么安装电话卡)

  • 华为支付保护中心在哪(华为支付保护中心收费吗)

    华为支付保护中心在哪(华为支付保护中心收费吗)

  • 华为m6怎么设置分辨率(华为M6怎么设置手写笔防误触)

    华为m6怎么设置分辨率(华为M6怎么设置手写笔防误触)

  • 刚开的淘宝店怎么发布宝贝(刚开的淘宝店怎么做起来)

    刚开的淘宝店怎么发布宝贝(刚开的淘宝店怎么做起来)

  • 宜搜小说怎么打不开(宜搜小说app怎么样)

    宜搜小说怎么打不开(宜搜小说app怎么样)

  • 自己怎么创建公众号(自己怎么创建公司)

    自己怎么创建公众号(自己怎么创建公司)

  • iphone xr是双扬声器吗(xr双扬声器声音一样大吗)

    iphone xr是双扬声器吗(xr双扬声器声音一样大吗)

  • realpopup.exe - realpopup是什么进程

    realpopup.exe - realpopup是什么进程

  • 在windows server 2016安装Web服务器(IIS)(在Windowsserver2019环境下,配置IP地址使用)

    在windows server 2016安装Web服务器(IIS)(在Windowsserver2019环境下,配置IP地址使用)

  • 超率累进税率定义
  • 所得税费用会计准则
  • 增值税专用发票使用规定 最新
  • 涉税业务有哪些
  • 利润表的税金及附加是计提数还是实缴数
  • 房屋租赁收入如何征税?
  • 小型微利企业认定标准2023年
  • 企业的现金流量表反映的是什么
  • 收到低值资产报废回收款账务处理
  • 其他应收款利息收入税务规定
  • 税收完税证明分为几种
  • 租赁厂房发生的改造装修费用
  • 公司改名字麻烦不
  • 文化建设服务费减免
  • 利润转增资本交什么税
  • 应收账款 转让
  • 二手房个人所得税和增值税
  • 1697506686
  • 房地产预收账款是什么
  • 兼职劳务报酬要交个税吗
  • 进项税额转出会计处理
  • 科技推广和应用服务业
  • 非限定性净资产相当于哪个科目
  • 非盈利组织稳定吗
  • 电脑屏幕字体模糊怎么办
  • 在建工程会计分录例题
  • php跨域解决方案
  • replace.exe进程
  • uniapp怎么做适配
  • 医院会计制度与实务
  • 工伤报销入账
  • 应付职工薪酬资产还是负债
  • 会计劳保用品有哪些东西呢
  • go开发web项目
  • 简易html代码
  • vue2计算属性和vue3的计算属性的区别
  • 随机梯度下降算法优缺点
  • 购买银行承兑汇票怎么做账
  • 交所得税会计分录例题
  • 非金融企业之间借款利息可以抵扣吗
  • php array_fill
  • 帝国cms自动更新
  • python创建ndarray
  • 购汽车能抵扣进项吗
  • sqlserver2005简介
  • 公司缴纳残保金的标准
  • 计入其他综合收益的有哪些
  • 视同销售是怎么回事?
  • 公司与个人可以合伙吗
  • 产品出口认证
  • 土地作为无形资产入账依据
  • 押金为什么要走支付宝
  • 税控抵税怎么做分录
  • 十二月份没出现问题
  • 以前年度损益调整属于哪类科目
  • 注销股本对所有股票影响
  • 久期缺口计算公式解析
  • 企业开办费计入什么科目
  • 阿里云 远程连接
  • mysql数据库分区查询
  • Windows任务计划高级应用
  • 分布式交互
  • ubuntu20.4分区
  • win7桌面右下角
  • windows 8 key
  • glClearBufferSubData
  • linux中crontab的用法
  • 怎么在html中调用js的函数
  • ntp ntpdate
  • vue组件用法
  • python用matplot画图
  • jquery easyui插件
  • JS中call/apply、arguments、undefined/null方法详解
  • android.view.window.addflags
  • python编程基础语法
  • 广东省电子税务局电话
  • 杭州没有户口可以上幼儿园吗
  • 回迁房需要交契税吗
  • 北京市地税局领导
  • 全国青少年学法网(官网)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设