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

福哥答案2020-10-23:
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。

posted @   福大大架构师每日一题  阅读(103)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示