2020-10-23:go中channel的创建流程是什么?

福大大架构师每日一题 2020-10-23 07:11:19
2020-10-23:go中channel的创建流程是什么?#福大大架构师每日一题#
...全文
2826 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepSayingNo 2020-10-23
  • 打赏
  • 举报
回复
创建channel可以创建缓冲队列或者非缓冲队列 创建完了会给队列分配内存,在堆中分配 最后返回一个指向channel的pointer
  • 打赏
  • 举报
回复
1.元素大小是否小于2的16次方,否则throw。 2.对齐检查,否则throw。 3.元素大小和容量的乘积不能超出范围,否则panic。 4.生成*hchan,设置buf。 4.1.队列和元素大小为0。竞速检测器,buf存*hchan中的buf所在地址。 4.2.非指针。hchan和数据是一个整体。buf存数据的地址。 4.3.指针。hchan和数据分开。buf存数据的地址。 5.赋值操作。给*hchan的属性赋值,元素大小,元素类型,容量。 6.调用lockInit空函数,这个函数没什么用。 7.返回*chan。

50,537

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧