我有一个 Windows 服务,它只是监听某些事件。一旦触发,该服务就会执行一个进程 (.exe)。
我的问题:在 Windows Server 2003 上,这个功能运行良好。可执行文件的 CPU 占用率上升到约 20%,并且运行速度合理。
在 Windows Server 2008 上,如果以同样的方式执行,其运行速度至少会慢 3 倍,并且可执行文件的 CPU 占用率约为 1%。但是,只需运行可执行文件(无需侦听服务),其运行速度与在 Windows Server 2003 上一样快。
这似乎是 Windows Server 2008 未赋予可执行文件相同优先级的问题,但在任务管理器上看不到任何不同(CPU 使用率除外)。也可能是其他原因。
有什么想法可以解决这个恼人的问题吗?
答案1
当您调度创建新进程时,您是否明确指定了进程的优先级CreateProcess()
- 参数dwCreationFlags
- 如果NORMAL_PRIORITY_CLASS
指定了(默认),它会从父进程继承吗?