1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00

update dj

This commit is contained in:
Xargin 2018-07-03 11:43:19 +08:00
parent 73ec7ea953
commit e0b27eca41

View File

@ -94,3 +94,11 @@ Go 自身的 timer 就是用时间堆来实现的,不过并没有使用二叉
### 时间轮 ### 时间轮
![timewheel](../images/ch6-timewheel.png) ![timewheel](../images/ch6-timewheel.png)
用时间轮来实现 timer 时,我们需要定义每一个格子的“刻度”,可以将时间轮想像成一个时钟,中心有秒针顺时针转动。每次转动到一个刻度时,我们就需要去查看该刻度挂载的 tasklist 是否有已经到期的任务。
从结构上来讲,时间轮和哈希表很相似,如果我们把哈希算法定义为:触发时间%时间轮元素大小。那么这就是一个简单的哈希表。在哈希冲突时,采用链表挂载哈希冲突的定时器。
除了这种单层时间轮,业界也有一些时间轮采用多层实现,这里就不再赘述了。
## 任务分发