go语言
文章平均质量分 67
go语言基础理解
不蛋定
这个作者很懒,什么都没留下…
展开
-
六-4:计时器
一、设计原理 Go语言的定时器经历过很多个版本迭代 Go 1.9版本之前,使用全局唯一的四叉堆维护 Go 1.10-1.13,全局使用64个四叉堆,每个处理器(P)对应一个四叉堆 Go 1.14版本之后,每个处理器P直接管理一个四叉堆,通过网络轮询器触发 1. 全局四叉堆 所有的计时器都会存储在如下结构中 var timers struct { lock mutex gp *g created bool sleeping bool resc原创 2022-01-22 16:11:01 · 770 阅读 · 0 评论 -
六-2: go并发编程
Mutex 简介 互斥锁,限制临界区同时只能由一个线程持有 Mutex实现了Locker接口,对外提供两个接口,加锁用 Lock(), 退出加锁用 UnLock() Mutex不用初始化,直接声明就可以使用 Mutex一般可以单独使用,也可以嵌入其他结构中进行封装,对外暴露接口。 实现 type Mutex struct { state int32 sema uint32 } 演进 初版 使用一个 flag 来表示锁是否被持有,所有 goroutine 进入队列排队执行,先来先得 看似公平原创 2021-10-30 18:30:47 · 171 阅读 · 0 评论 -
go语言GMP并发模型
转载转载 2021-06-07 17:44:16 · 150 阅读 · 0 评论