想了解一些底层的细节
1
byaiu 2021-09-10 18:12:26 +08:00
关键词 timer wheel
高精度另说 |
4
ToPoGE 2021-09-11 00:32:59 +08:00 via Android
以前搞过单片机,定时器是靠晶振震荡周期来实现,不同晶振震荡周期不同,一切的上层应用都是基于这个
|
5
jedihy 2021-09-11 05:45:25 +08:00
时钟中断会定时触发,然后操作系统就可以利用这个中断实现定时器的逻辑。用户态的 timer 实现多种多样,没有仔细研究过。
|
6
jedihy 2021-09-11 06:00:40 +08:00
windows 里面的 WaitForSingleObject,大致是把当前线程状态切换为 waiting,然后交给 scheduler 并告知一个 deadline,然后 scheduler 就可以调度其他线程直到 deadline 到期,把这个等待的线程切换为 running 。
|
7
yolee599 2021-09-11 13:32:53 +08:00 via Android
硬件定时器数量非常有限(一般不超过 5 个),通常是使用一个硬件定时器,设定一个固定的中断周期,比如 1 毫秒。操作系统再实现软件定时器,把所有软件定时器放在一个升序链表中,每次硬件定时器中断来了的时候就检查软件定时器链表中有没有过期的定时器,有就调用这个软件的回调通知应用。软件定时器精度就是硬件定时器的周期
|
8
iXingo OP 谢谢
|