
Go底层
文章平均质量分 84
通过阅读go源码学习go的机制。
Voryla
这个作者很懒,什么都没留下…
展开
-
图解:Go Mutex
Mutex 可能处于两种不同的模式:正常模式和饥饿模式。在正常模式下,新来的G会尝试自旋获取锁,如果自旋获取失败,则会按照FIFO的顺序排队获取锁。当Mutex被释放,会唤醒等待队列中第一个等待者G,它需要和新来的 G们竞争Mutex的使用权。而新来的G会更有优势,它们已经在CPU上运行且它们的数量更多。因此一个刚被唤醒的等待者很大概率获取不到锁,在这种情况下,它会被放置到等待队列的队首。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xht5oJlA-167029119359原创 2022-12-06 09:47:59 · 540 阅读 · 0 评论 -
Go 源码阅读:sync.Pool
sync.Pool管理一组可以单独保存和检索的临时对象。目的是缓存已分配但未使用的对象,以供以后重用,从而减轻GC的压力。核心就是Put、Get和New。原创 2022-12-01 13:03:07 · 232 阅读 · 0 评论 -
Go Channel (底层实现逻辑)
Go Channel (底层实现逻辑)原创 2022-06-24 13:59:03 · 508 阅读 · 0 评论 -
Go Slice 与 Array的区别
Slice 与 Array的区别 GOLang原创 2022-06-23 13:32:41 · 673 阅读 · 0 评论 -
Go语言源码阅怎么看?
源码阅读 引言 本文记录笔者近期学习Go底层源码时所涉及到的部分笔记,在此记录以供自己复习使用。 未完待续。。 文章目录源码阅读引言栈分配内存的阈值通道的底层结构体接口的底层结构体切片的底层结构体Map的底层结构体G调度函数GMP底层结构体互斥锁结构体 栈分配内存的阈值 cmd/compile/internal/ir/cfg.go 改文件定义了非逃逸的情况下栈上分配内存的阈值 // 定义显示声明的变量,在栈上能分配的最大容量(10MB),若大于该值,显示变量将被分配在堆上 // maximum size v原创 2022-03-31 22:45:13 · 1193 阅读 · 1 评论 -
Go Array
Array 数组 1.初始化 存储结构 编译期间的数组类型: type Array struct { Elem *Type // element type Bound int64 // number of elements; <0 if unknown yet } 由cmd/compile/internal/types.NewArray 函数生成的,该类型包含两个字段,分别是元素类型 Elem 和数组的大小 Bound,这两个字段共同构成了数组类型,而当前数组是否应该在堆栈中初始化也在编译期就原创 2022-03-27 09:03:36 · 353 阅读 · 0 评论