您的位置:首页 > 其它

Sleep()函数的执行为什么不准确?

2009-06-23 11:33 295 查看
Sleep()函数的执行为什么不准确?
在windows下是很难实现的。
1. windows不是实时操作系统。
2. Sleep(20)说明线程将自己放到阻塞队列当中,让操作系统在20ms后将其放入就绪队列当中
3. 但如果此时就绪的线程多于1个(一般是这样),它不一定会选中这个线程。
4. 软中断和硬件中断也做不到这点,因为cpu在做某些底层操作时可能关中断。
5. 你可以使用不可屏蔽中断来做,不过未免。。。。。
不知楼主对精度要求有多高,下面是几种不同的替代方案。
1. 使用VxWorks这样的实时系统,这样可以达到微秒级。
2. 使用软中断也不错,关中断的时间毕竟不多,也不长。
3. 就是做个内核线程了(我曾经做过驱动程序,这是可取的)。
4. 最简单的是提高线程的优先级别,那么在就绪时更可能被调度,当然不是一定,他很难竞争过内核线程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: