软件定时就是直接利用CPU的时钟,用计算循环的方法计时。例如假设CPU执行一个指令需要10个
时钟周期,那么循环执行1000次就是10000个时钟。因为CPU的时钟间隔是恒定的,那么假设一个时钟是1微秒,则10000个时钟就是0.01秒。这种循环测试时间长度的办法在单任务系统,例如DOS下,还是相对准确的。但是在Windows这种多任务系统下由于系统调度的原因程序会被不停滴中断(好让其它任务有机会运行),这样其实就不能精确知道1000次循环究竟用了多少个时钟(因为有些时段分给别的任务了),所以在多任务环境下软件定时误差很大。一般只能达到毫秒级的
准确度硬件定时则是基于硬件。例如定时/
计数器,这个不受操作系统影响,由硬件提供时间,精度可以达到微秒级。如果更精确的时间可以使用天文台授时或者
原子钟。其精度更高。