我在Windows CE上遇到了一个奇怪的问题:
运行3个EXE
1)除非发出退出事件,否则第一个exe每8分钟做一些工作。 2)除非退出事件发出信号,否则第二个exe每5分钟做一些工作。 3)循环运行时的第三个exe,在while循环中,它随机地执行一些工作。 这个while循环一直持续到发出退出事件为止。
现在这个退出事件是全局事件,任何进程都可以发出信号。
问题是 当我运行First exe它工作正常, 运行第二个exe它工作正常, 运行第三个exe它工作正常
当我运行所有exes时,只有第三个exe运行,并且没有指令在第一个和第二个执行。
第三个exe一旦被终止,第二个就开始处理。 可能是第三个exe循环占用所有CPU周期的情况? 我没有尝试过睡觉,但我认为这可以做一些技巧。 但OS应该为所有进程提供CPU ... 任何想法???
答案 0 :(得分:2)
将while循环放在第三个EXE中,每次循环休眠,看看会发生什么。即使它没有修复这个特定的探测器,使用while循环进行轮询也不是一个好习惯,即使在循环内使用Sleep也不能替代正确的计时器。
答案 1 :(得分:1)
在MSDN上,我还读到CE允许(少于)32个进程同时进行。 (但是,上下文切换很快......)。有些已被系统服务占用。
答案 2 :(得分:1)
(从内存)如果没有更高优先级的进程在运行,则Windows CE中的进程将一直运行,或者如果有其他进程具有相同优先级的运行,则它们会运行其时间片(100ms)。我不确定Windows CE是否为活动/前台窗口提供了一个小优先级提升(就像桌面Windows一样)。
在您的情况下,前两个进程缺乏处理器时间,因此它们永远不会运行,直到第三个进程退出。解决此问题的一些方法是:
要检查的另一件事是第三个进程实际上确实及时完成了它的任务,并且没有固定CPU试图正常地执行它的事情。
答案 3 :(得分:0)