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. 最简单的是提高线程的优先级别,那么在就绪时更可能被调度,当然不是一定,他很难竞争过内核线程。
在windows下是很难实现的。
1. windows不是实时操作系统。
2. Sleep(20)说明线程将自己放到阻塞队列当中,让操作系统在20ms后将其放入就绪队列当中
3. 但如果此时就绪的线程多于1个(一般是这样),它不一定会选中这个线程。
4. 软中断和硬件中断也做不到这点,因为cpu在做某些底层操作时可能关中断。
5. 你可以使用不可屏蔽中断来做,不过未免。。。。。
不知楼主对精度要求有多高,下面是几种不同的替代方案。
1. 使用VxWorks这样的实时系统,这样可以达到微秒级。
2. 使用软中断也不错,关中断的时间毕竟不多,也不长。
3. 就是做个内核线程了(我曾经做过驱动程序,这是可取的)。
4. 最简单的是提高线程的优先级别,那么在就绪时更可能被调度,当然不是一定,他很难竞争过内核线程。
相关文章推荐
- 没有被调用的函数其代码为什么会被执行?
- new一个对象,构造函数会执行可以理解,为什么除了构造函数以外的函数也可以执行?
- javascript自执行函数为什么要把windows作为参数传进去
- javascript,jQuery自执行函数(匿名函数)为什么要把windows, jQuery, undefined作为参数传进去
- Nutch中的Injector为什么按照url链接的个数执行多次Map()函数?
- javascript自执行函数为什么要把windows作为参数传进去
- //COUNT类中的函数先于主程序执行//,为什么
- 关于Sleep()函数不准确和随机数的问题
- javascript 自定义函数 为什么不能执行
- javascript中为什么有时需要创建立即执行的函数
- 为什么object.onkeyup=function(){}函数无法执行?
- Javascript基础_12深入理解javascript中的立即执行函数(function(){…})()
- 为准确生成执行计划更新统计信息-analyze与dbms_stats
- ES6记录异步函数的执行时间详解
- 为什么通过空指针(NULL)可以正确调用一些类的成员函数?
- [寒江孤叶丶的Cocos2d-x之旅_04]Cocos2d-x延时执行动画或函数
- UCML设定双击事件页面初始化自动执行函数
- ajaxFileUpload()中的success和error中的回调函数不执行的备注
- 为什么表单的提交回调函数不能以 "submit" 作为函数名?
- 为什么线程函数不能有返回值