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

  • 加密算法的密钥是什么(加密算法及密钥描述正确的是)

    加密算法的密钥是什么(加密算法及密钥描述正确的是)

  • 腾讯会议美颜显卡不支持(腾讯会议美颜显卡驱动怎么安装)

    腾讯会议美颜显卡不支持(腾讯会议美颜显卡驱动怎么安装)

  • 华为nova6与华为nova7se对比(华为nova6与华为nova5哪个好)

    华为nova6与华为nova7se对比(华为nova6与华为nova5哪个好)

  • 视频点击率怎么算钱(视频点击率怎么赚钱的)

    视频点击率怎么算钱(视频点击率怎么赚钱的)

  • 钉钉视频会议共享屏幕没有声音(钉钉视频会议共享后怎么能看见学生)

    钉钉视频会议共享屏幕没有声音(钉钉视频会议共享后怎么能看见学生)

  • 手机有声音找不到来源(手机有声音找不到来源,重启也没用)

    手机有声音找不到来源(手机有声音找不到来源,重启也没用)

  • 窗口是windows应用程序的用户界面吗(窗口是windows什么程序存在方式)

    窗口是windows应用程序的用户界面吗(窗口是windows什么程序存在方式)

  • 微信被对方拉黑了咋加(微信被对方拉黑了怎么才能联系到她)

    微信被对方拉黑了咋加(微信被对方拉黑了怎么才能联系到她)

  • 苹果x屏幕不亮电话还能打通(苹果14屏幕常亮)

    苹果x屏幕不亮电话还能打通(苹果14屏幕常亮)

  • 苹果7白屏开不了机怎么回事(苹果7白屏开不了机怎么办只显示苹果图标)

    苹果7白屏开不了机怎么回事(苹果7白屏开不了机怎么办只显示苹果图标)

  • 华为p30lite是什么意思(华为p30lite怎么样?)

    华为p30lite是什么意思(华为p30lite怎么样?)

  • word怎么随意移动文字(word怎么随意移动一列文字位置)

    word怎么随意移动文字(word怎么随意移动一列文字位置)

  • 抖音共同好友怎么来的(抖音共同好友怎么看不了)

    抖音共同好友怎么来的(抖音共同好友怎么看不了)

  • 华为开发者模式干嘛的(华为开发者模式是干什么的)

    华为开发者模式干嘛的(华为开发者模式是干什么的)

  • 三星s8系统升级后多窗口没了(三星s8升级最新版本怎么样)

    三星s8系统升级后多窗口没了(三星s8升级最新版本怎么样)

  • 酷狗下载的音乐在哪个文件夹(酷狗下载的音乐kgm怎么转换成mp3)

    酷狗下载的音乐在哪个文件夹(酷狗下载的音乐kgm怎么转换成mp3)

  • 华为nova2s和华为nova2区别(华为nova2s和华为nova2plus区别)

    华为nova2s和华为nova2区别(华为nova2s和华为nova2plus区别)

  • 网络机顶盒和运营商机顶盒有什么区别(机顶盒和网络盒子哪个好)

    网络机顶盒和运营商机顶盒有什么区别(机顶盒和网络盒子哪个好)

  • x27的黑名单在哪里(x27怎么设置把黑名单里的人弄出来)

    x27的黑名单在哪里(x27怎么设置把黑名单里的人弄出来)

  • win10双击安装包没反应(win10双击安装包点击没有反应)

    win10双击安装包没反应(win10双击安装包点击没有反应)

  • qq健康系统怎么修改身份信息(qq健康系统怎么换绑身份证)

    qq健康系统怎么修改身份信息(qq健康系统怎么换绑身份证)

  • Excel怎么制作设计名片(excel表怎么设计)

    Excel怎么制作设计名片(excel表怎么设计)

  • http协议和tcp协议的区别

    http协议和tcp协议的区别

  • 唯品会如何开店(天猫如何开店)

    唯品会如何开店(天猫如何开店)

  • 职工教育经费申请事由
  • 房地产业所得税
  • 企业内部研发支出会计处理探讨
  • 所得税季报填错了已经申报了
  • 怎么查自己是否
  • 残保金需要计提分录吗
  • 企业收到政府补助资金怎么做账
  • 关联方交易影响因素
  • 企业所得税前可以扣除的项目
  • 转登记小规模纳税人留抵税额
  • 公司零申报怎么注销
  • 土地结转会计分录是什么
  • 企业购买房屋的行为涉及哪些税种
  • 工程领用物资退回会计分录怎么写?
  • 消防增值服务
  • 《减免所得税优惠明细表》
  • 奖金分为两次发放合法吗
  • 每股股份价格
  • 弥补以前年度亏损从哪里取数
  • 研发费用的
  • 旅游业差额征税怎么计算
  • 1697508803
  • 怎样接收电子承兑汇票流程视频
  • 发票未到的费用怎么处理
  • 启用或关闭windows功能怎么勾选
  • 耳机插在电脑上有滋滋的声音
  • 六月雪的养殖方法和注意事项
  • 虚拟机怎么安装iso镜像文件
  • 公司估值一般不超过市值多少
  • 什么是财政代管资金
  • 已开发票发生销售退回如何做账?
  • 固定资产折旧的会计凭证
  • php的api调用方法
  • php 字符串函数
  • 冲减其他应收款摘要怎么写
  • 企业雇佣临时工个税
  • vue控制按钮是否禁用
  • 发放职工薪酬账务怎么做
  • 天猫提现不走对公2023
  • cnn三层
  • 长期待摊费用为负数怎么调整
  • 微软官方wintogo
  • 收到预付款怎么入账
  • 运输公司开具的增值税专用发票谁抵扣
  • 总资产报酬率的公式
  • 一般纳税人季报还是月报
  • 收到项目资本金怎么入账
  • 进项税额转出的几种情况
  • 生产过程中报废怎么核算成本
  • 商场联营扣点缴纳增值税税率
  • 费用报销单和支付证明单的区别
  • 预付卡发票如何做分录
  • 居间活动费用由谁负担
  • 拿到营业执照后需要做的事
  • 固定资产增加的方式有
  • Sqlserver中char,nchar,varchar与Nvarchar的区别分析
  • ssms连接mysql
  • 打印机向windows发送消息
  • win7系统无法安装软件
  • linux命令pwd是什么意思
  • 怎么配置命令
  • xp系统远程桌面怎么设置
  • linux内核模块命令
  • win10家庭版教程
  • linux 怎么样
  • win8电脑设置在哪
  • android游戏开发框架
  • h1标签的使用完全正确的是
  • javascript基础编程
  • unity音频导入设置
  • unity3d基础教程
  • jquery定位
  • python 循环太慢
  • js设计模型
  • python 字典怎么添加数据
  • 个税更正申报如何导出大厅申报表
  • 北京朝阳地税搬哪去了
  • 税务部门三化建设
  • 煤炭资源税税率减半对上市公司影响
  • 河北个体工商户年报入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设