首页 > 编程语言 >go专家编程--数据结构chan

go专家编程--数据结构chan

时间:2022-11-26 17:46:38浏览次数:34  
标签:... waitq -- chan qcount 队列 uint go

chan结构

type hchan struct {
		qcount			uint            // 队列中剩余元素大小
		dataqsiz		uint            // 队列大小
		buf			      unsafe.Pointer        // 环形队列指针
		elemsize          uint16                    // 元素大小
		elemtype          *_type                   // 元素类型
		sendx              uint                       // 队列下标,写入队列位置
		recvx               unit                      // 队列下标,读队列位置
		sendq              waitq                   // 等待写消息的goroutine队列
		recvq               waitq                   // 等待读消息的goroutine队列
		close               uint32                 // 关闭标示
		mux                mutex.                 // 锁


} 

  • 环形队列
  • 等待队列(写会唤起读,读会唤起写)
  • 类型信息

chan读写

主要关注是不是缓存,是不是qcount等?

chan用法

  • 单向
  • select
    select
    {
    case e:= <- chan1:
    ...
    case e:= <- chan1:
    ...
    default:
    ...
    }
  • range
    for e:= range elemRange{...}

标签:...,waitq,--,chan,qcount,队列,uint,go
From: https://www.cnblogs.com/wuchenggong/p/16927877.html

相关文章

  • 推荐一款 .NET 编写的 嵌入式平台的开源仿真器
    Renode是一个开发框架,通过让你模拟物理硬件系统来加速物联网和嵌入式系统开发。Renode可以模拟Cortex-M、RISC-V等微控制器,不仅可以模拟CPU指令,还可以模拟外设,甚至可......
  • Linux面试题2:网络IO模型 & IO多路复用
    网络IO先确定一下范围,我们讨论的都是网络IO,现阶段计算机早已经从CPU密集型转换成网络IO密集型,所以网络io的类型对于服务响应而言更重要。五种IO模型依据Unix的IO分类,网......
  • web系统添加盲水印
    前言为增加系统安全性,避免重要敏感信息通过截图方式泄露,对web页面增加盲水印标识,标注系统名称,登陆人,当前时间等信息,这里的盲水印指肉眼不可见的html水印增加水印引入wat......
  • linux重置core文件生成目录
    查看/proc/sys/kernel/core_pattern文件或kernel.core_pattern里面的内容默认是core,也就是core文件的生成路径和工作路径一致,如果内容为其他值,那么对应的core文件就会生成......
  • ECMAScript 2022 & Temporal All In One
    ECMAScript2023&TemporalAllInOneES14/ES2023ES2015=>ES6...ES2022=>ES13ES2023=>ES14https://caniuse.com/sr_es13https://caniuse.com/sr_......
  • NOIP2022 游记
    进场前的想法是:过掉前两题,后两题暴力苟住,感觉这样大不至于挂太惨所以心态还行。8:25发了包的解压密码,但是看不了题,于是瞅了眼包。看barrack是计数,很好,看match像个ds......
  • Introduction to Computer Science #Homework 06
    IntroductiontoComputerScienceHomework061.程序是如何执行的3.2.1给寄存器R赋值20CPU将寄存器R中的值存回a所在的地址3.2.2将主存中1200地址处的值读取到寄......
  • Java 注解和反射(三)获得反射对象
    Class类在Object类中定义了以下方法,此方法将被所有子类继承publicfinalClassgetClass()以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓反......
  • python基础:typora软件、markdown语法、typora主要功能介绍、计算机的本质、计算机五
    目录typora软件markdown语法typora主要功能介绍计算机的本质计算机五大组成部分概要typora软件typora软件 是一款文本编辑器是目前非常火爆的文本编辑器 默认情况下......
  • 数据结构实验(五)二叉树
    6-1二叉树的遍历就是简单的遍历voidInorderTraversal(BinTreeBT){if(BT==NULL)return;if(BT->Left!=NULL)InorderTraversal(BT->Left);......