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

  • 淘宝新手推广如何获取关注度(淘宝刚开始如何推广)

    淘宝新手推广如何获取关注度(淘宝刚开始如何推广)

  • 当今邮件群发受众多企业追捧的四大理由(邮件群发会被看到吗)

    当今邮件群发受众多企业追捧的四大理由(邮件群发会被看到吗)

  • 手机为什么没有声音了(手机为什么没有信号了重启也没有用)

    手机为什么没有声音了(手机为什么没有信号了重启也没有用)

  • apple care可以退吗(applecare可以退吗没有使用)

    apple care可以退吗(applecare可以退吗没有使用)

  • 淘宝怎么删除好评(淘宝怎么删除好友代付记录)

    淘宝怎么删除好评(淘宝怎么删除好友代付记录)

  • 小米10青春版什么时候上市(小米10青春版什么意思)

    小米10青春版什么时候上市(小米10青春版什么意思)

  • oppoa5wifi信号不好怎么解决(oppo手机wlan信号不好怎么办)

    oppoa5wifi信号不好怎么解决(oppo手机wlan信号不好怎么办)

  • 华为蓝牙鼠标突然没反应(华为蓝牙鼠标突然不灵敏了)

    华为蓝牙鼠标突然没反应(华为蓝牙鼠标突然不灵敏了)

  • 电脑耳机连麦对方听不见声音(电脑耳机连麦对方听不到)

    电脑耳机连麦对方听不见声音(电脑耳机连麦对方听不到)

  • 手机屏幕突然变模糊了(手机屏幕突然变黄了怎么办)

    手机屏幕突然变模糊了(手机屏幕突然变黄了怎么办)

  • 美团评价评错了怎么办(美团评价评错了怎么撤回)

    美团评价评错了怎么办(美团评价评错了怎么撤回)

  • 空间厘米秀怎么关闭(空间厘米秀怎么开启)

    空间厘米秀怎么关闭(空间厘米秀怎么开启)

  • 苹果11可以下载两个微信吗(苹果11可以下载电子称重器吗)

    苹果11可以下载两个微信吗(苹果11可以下载电子称重器吗)

  • IPAD如何强制解锁(ipad强制解锁教程)

    IPAD如何强制解锁(ipad强制解锁教程)

  • 优酷下载视频怎么转成mp4格式(优酷下载视频怎么转换mp4)

    优酷下载视频怎么转成mp4格式(优酷下载视频怎么转换mp4)

  • 抖音发布了还能剪切吗(抖音发布了还能删除吗)

    抖音发布了还能剪切吗(抖音发布了还能删除吗)

  • 手机被标记房产中介怎么取消(手机被标记中介房产怎么取消)

    手机被标记房产中介怎么取消(手机被标记中介房产怎么取消)

  • 如何删除抖音里的喜欢(如何删除抖音里喜欢的视频作品)

    如何删除抖音里的喜欢(如何删除抖音里喜欢的视频作品)

  • pr渲染跟不渲染区别(pr渲染程序区别)

    pr渲染跟不渲染区别(pr渲染程序区别)

  • 拼多多账号注销流程(拼多多账号注销后订单还在吗)

    拼多多账号注销流程(拼多多账号注销后订单还在吗)

  • 如何通过10086转赠流量(10086怎么转流量给别人)

    如何通过10086转赠流量(10086怎么转流量给别人)

  • 微信定位怎么发给别人(微信定位怎么发给QQ好友)

    微信定位怎么发给别人(微信定位怎么发给QQ好友)

  • 华为nova4和nova4e区别(华为nova4和nova4e哪个贵些)

    华为nova4和nova4e区别(华为nova4和nova4e哪个贵些)

  • 全球购骑士卡怎么退订单(全球购骑士卡怎么用)

    全球购骑士卡怎么退订单(全球购骑士卡怎么用)

  • 优酷字幕设置方法(优酷播放字幕设置在哪里)

    优酷字幕设置方法(优酷播放字幕设置在哪里)

  • 金银首饰销售需求分析
  • 增值税专用发票可以开电子发票吗
  • 合伙企业缓交所得税
  • 个体户的附加税表怎么填写
  • 外资企业是否属于公有制经济
  • 小规模商贸公司没有进项可以开发票吗?
  • 个体户逾期申报罚款多少
  • 滞留票的处理
  • 环保罚款计入什么会计科目
  • 购买实验器材会计分录
  • 施工企业项目管理办法
  • 增值税与实际缴纳不符
  • 进项发票可以不入账吗
  • 文化事业建设税怎么申报
  • 混合销售和兼营的区别
  • 代收款项属于收入范围吗
  • 销售换货怎么做账务处理
  • 机械租赁费如何入账科目
  • 进项抵扣怎么做分录
  • 土地使用税和房产税
  • 购进货物无偿赠送其他单位
  • windows安全警报关不掉
  • 小规模纳税人月收入超过10万,要交多少税
  • win10任务栏快捷图标不见了
  • 发票认证平台上不去
  • PHP:zip_entry_read()的用法_Zip函数
  • 如何计算业务招标价格
  • 对账小技巧
  • vue3.0 vite
  • 企业所得税年报截止日期2023
  • php session用法
  • php的foreach
  • MVC架构模式
  • 存货非正常损失可以所得税前扣除吗
  • 合作公司投资方式
  • 帝国cms什么语言
  • 房地产城建税计税依据
  • 什么情况下要去y加ies
  • 现金结算的特点和概念
  • 网站维护费用
  • 免税申报表里的免税销售额是不含税
  • 企业应付职工薪酬的会计核算
  • 固定资产没有折旧完要转走会计科目
  • 季节性停工损失计入存货成本吗
  • 暂估入库的税务怎么处理
  • 资产减值损失年报怎么调整
  • 后续加工环节的成本利润
  • 不偿还的其他应收款
  • 境外情况
  • 企业在建工程项目
  • 确认递延所得税资产账务处理
  • 税控服务费怎么记账
  • 收到商业承兑汇票的会计分录
  • 支票丢失需要登报吗
  • mysql怎么直接向表中写数据
  • mysql数据库的介绍
  • macos睡眠
  • ubuntu 18.04怎么用
  • schupd.exe - schupd是什么进程 有什么用
  • 怎么判断电脑windows几
  • linux系统查询进程
  • 进windows花屏
  • win10预览版21337
  • linux 有哪些
  • 宏基win8改win7
  • grid sheet
  • cocos2dx schedule
  • Unity3D游戏开发基础
  • javascript中attribute和property的区别详解
  • nodejs全栈前景
  • linux 删除inode
  • android遇到的难题,怎么解决的
  • js 获取iframe
  • jquery遍历object
  • js如何输出页面内容
  • jquery 使用
  • jquery中each()方法的作用及使用
  • textview在哪
  • 静海去天津的公交
  • 税务申报系统出现异常怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设