想象一下,您有一个 Windows 进程 A 以 AboveNormal 的优先级运行,它启动另一个进程 B 而没有指定优先级。进程 B 的优先级是否继承自进程 A 的优先级?那么,进程 B 的优先级是什么?高于正常、正常还是其他?
问问题
3491 次
3 回答
7
如果未指定,则在某些情况下会继承优先级类。
当调用进程在IDLE_PRIORITY_CLASS或BELOW_NORMAL_PRIORITY类中时会发生这种情况。否则,除非在 CreateProcess 调用期间指定,否则它将获得NORMAL_PRIORITY_CLASS 。
MSDN 在 CreateProcess 的 dwCreationFlags 上说:
该参数还控制新进程的优先级,用于确定进程线程的调度优先级。有关值的列表,请参阅 GetPriorityClass。如果没有指定优先级类标志,则优先级类默认为 NORMAL_PRIORITY_CLASS,除非创建进程的优先级类是 IDLE_PRIORITY_CLASS 或 BELOW_NORMAL_PRIORITY_CLASS。在这种情况下,子进程接收调用进程的默认优先级。
因此,答案是 NORMAL 优先级。基本上任何高于正常水平的东西都不会传递给孩子。
于 2010-09-26T15:50:04.087 回答
0
从CreateProcess的文档中:
dwCreationFlags [in]
控制优先级和进程创建的标志。有关值的列表,请参阅进程创建标志。
该参数还控制新进程的优先级,用于确定进程线程的调度优先级。有关值的列表,请参阅 GetPriorityClass。如果没有指定任何优先级标志,则优先级默认为 NORMAL_PRIORITY_CLASS,除非创建进程的优先级是 IDLE_PRIORITY_CLASS 或 BELOW_NORMAL_PRIORITY_CLASS。在这种情况下,子进程接收调用进程的默认优先级。
因此,在您的示例中,新进程将具有正常优先级。
于 2009-03-06T16:55:43.307 回答
-1
在 Windows 中,进程优先级不被继承。
于 2009-03-06T16:57:19.777 回答