时间轮
只需要启动一个定时器, 这个定时器就跟时钟一样转动, 一次只会跳动一个固定的时间, 我们叫做tick, 假设这个tick为1s, 如果一轮的槽数为60, 那就跟现实生活中的时钟没什么两样.
只需要把定时任务加入到相应过期时间的槽当中, 比方说当前指针指向的位置为pos, 那么要在3秒后过期一个任务, 只需要在下标为pos+3
的槽中挂上这个定时任务即可, 当指针按频率转动到该槽的时候, 这个槽上的所有任务都被通知过期. 这样也就实现了一个timer实现多个定时任务的功能, 往往在服务端中, 可以节省大量的CPU.
具体的实现可以看看这里