阅读:2350回复:4
windows xp 能否关调度和关中断
不知道发到这里是否对了,这些问题困扰我好久了,一直没解决,希望版主不要删。
各位大虾, 我有一段代码,用gettickcounts 看, 执行时间基本是0。但有时会比较大(基本是15或16ms的整数倍,这个我理解),不知道除了期间发生中断或调度的原因外,还有其他原因吗? 如果仅仅是这两个原因,可临时关掉中断,调度吗, 以使这段代码的执行时间是确定的,至少使得每次执行时间相差很小(我想怎么也得在1ms一下把),而不是隔了一个或几个时钟周期。 我搜了一下,好像可以通过驱动等某些手段进入到ring 0下执行CLI,STI。有知道的前辈也可以讲讲,是否还有其他方法,让大家系统的了解下。 可是如果发生调度该怎么办呢?我已经把我的程序提到实时优先级了。 另外,把这个问题扩展一下, 如果我起了一个周期定时器,比如15ms间隔或31ms间隔(1个或2个周期),如何让定时器的间隔也变成确定的,在我的例子中就是间隔不能突然变为3个或更多个周期。 PS:1. VB写的程序。 2. 好像可以加RTX扩展可以解决以上两个问题,但是RTX不支持VB。另外我觉得使用起来可能会比关中断和调度复杂(如果可能的话) 我是菜鸟,希望XDJM都能参与讨论,感谢感谢! |
|
沙发#
发布于:2012-06-26 11:38
可不可以用vc包dll再用vb调?把关键用vc重写
|
|
|
板凳#
发布于:2012-06-26 20:12
不太明白,你是指vc的定时器做成dll吗?能否详细说说啊。
据我了解,vc的ontimer与vb的timer半斤八两,都不可靠。 我觉得主要是线程调度导致定时器间隔不确定,通过注册表查到线程分配的时间片配额是2,那么一切换到别的线程就会导致定时延迟2个周期(还不包括切换时间在内),所以即使使用再高精度或再高分辨率的取时间方法可能都没用。我自己的看法+实验 郁闷啊 |
|
地板#
发布于:2012-06-27 14:32
不知道我问的问题太低级,还是这里的xd不肯指点,伤心
|
|
地下室#
发布于:2013-04-09 20:44
如果是驱动的话可以升到DISPATCH_LEVEL来阻止调度
|
|