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 · 766 阅读 · 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 · 168 阅读 · 0 评论 -
go语言GMP并发模型
转载转载 2021-06-07 17:44:16 · 148 阅读 · 0 评论