mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
update dj
This commit is contained in:
parent
73ec7ea953
commit
e0b27eca41
@ -94,3 +94,11 @@ Go 自身的 timer 就是用时间堆来实现的,不过并没有使用二叉
|
||||
### 时间轮
|
||||
|
||||

|
||||
|
||||
用时间轮来实现 timer 时,我们需要定义每一个格子的“刻度”,可以将时间轮想像成一个时钟,中心有秒针顺时针转动。每次转动到一个刻度时,我们就需要去查看该刻度挂载的 tasklist 是否有已经到期的任务。
|
||||
|
||||
从结构上来讲,时间轮和哈希表很相似,如果我们把哈希算法定义为:触发时间%时间轮元素大小。那么这就是一个简单的哈希表。在哈希冲突时,采用链表挂载哈希冲突的定时器。
|
||||
|
||||
除了这种单层时间轮,业界也有一些时间轮采用多层实现,这里就不再赘述了。
|
||||
|
||||
## 任务分发
|
||||
|
Loading…
x
Reference in New Issue
Block a user