WINDOWS的大多数系统并非实时操作系统,所以不能规定计算机在某个精确到纳秒的时间让计算机做某项任务,如果规定了时间WINDOWS也将需要在完成了线程调度后,经行任务执行!
也就是说,如果你的应用程序指定计算机在
8:30:29.365秒执行A程序,那么程序真正执行的时间可能是
8:30:29.369、
8:30:29.378、
8:30:29.421等等,总之是一定大于等于你指定的时间
同理,使用windows的SetTimer函数指定interval(毫秒为单位)时,也不能够精确!Windows通常能尽最大努力满足你的需求,但存在些许误差!
WINDOWS是多线程操作系统,系统为每个线程分配时间片,然后通过调度方式来设置线程上下文使得程序运行。
WIN 7 中线程的时间片为15ms左右。如果你指定的interval小于等于15是没有意义的。而大于15也不一定是精确的,比如你指定的时间为31,而timer真正的执行间隔可能回事36,或者39,甚至更长,这取决于执行任务的复杂程度以及计算机当前硬件资源!