很久以前,我的程序中有一个错误。根本原因是 C 函数
sleep(60);
在极少数情况下,睡眠时间会少于 60 秒。或者该函数确实导致线程睡眠超过 60 秒,但是操作系统自动更改了时钟(这似乎是因为错误仅发生XX::00::00
在睡眠应该在 >xh0m0s 结束,它在x-1h59m59.99*s
) 结束。
然后我的项目经理大吼大叫,他说了几百万次我们应该只使用计时器,而不是睡眠。从那时起,我接受了定时器比 sleep() 更准确的概念,但现在我觉得我应该要求一些更权威的来源。所以 :
- 计时器比睡眠更精确吗?
- (相关)它们是否使用不同的方法深入(在操作系统级别)实现?
我知道定时器是用来做回调的,睡眠只是延迟当前线程的执行,我说的是延迟执行部分的实现。
BTW OS 是 Linux,但如果可能的话,我关心一般的答案。