Унаследован ли приоритет процесса? - PullRequest
2 голосов
/ 06 марта 2009

Представьте, что у вас есть процесс Windows, работающий с приоритетом AboveNormal, который запускает другой процесс B без указания приоритета. Унаследован ли приоритет процесса B от приоритета процесса A? Итак, что будет приоритетом в процессе B? Выше Нормального, Нормального или другого?

Ответы [ 3 ]

6 голосов
/ 26 сентября 2010

Если не указано, класс приоритета наследуется , в некоторых случаях.

Это происходит, когда вызывающий процесс находится в IDLE_PRIORITY_CLASS или BELOW_NORMAL_PRIORITY классе В противном случае он получает NORMAL_PRIORITY_CLASS , если это не указано во время вызова CreateProcess.

MSDN говорит о dwCreationFlags CreateProcess:

Этот параметр также управляет классом приоритета нового процесса, который используется для определения приоритетов планирования процесса потоки. Для получения списка значений см. GetPriorityClass. Если ни один из флаги класса приоритета указаны, класс приоритета по умолчанию NORMAL_PRIORITY_CLASS, если класс приоритета создания процесс IDLE_PRIORITY_CLASS или BELOW_NORMAL_PRIORITY_CLASS. В этом В этом случае дочерний процесс получает класс приоритета по умолчанию вызывающий процесс.

Поэтому ответ НОРМАЛЬНЫЙ класс приоритета. В основном все, что выше нормы, не передается ребенку.

0 голосов
/ 06 марта 2009

В Windows приоритет процесса не наследуется.

0 голосов
/ 06 марта 2009

Из документации на CreateProcess :

dwCreationFlags [in]

Флаги, которые управляют классом приоритета и созданием процесса. Список значений см. В разделе «Флаги создания процесса».

Этот параметр также управляет классом приоритета нового процесса, который используется для определения приоритетов планирования потоков процесса. Для получения списка значений см. GetPriorityClass. Если ни один из флагов класса приоритета не указан, классом приоритета по умолчанию является NORMAL_PRIORITY_CLASS, если только классом приоритета процесса создания не является IDLE_PRIORITY_CLASS или BELOW_NORMAL_PRIORITY_CLASS. В этом случае дочерний процесс получает класс приоритета по умолчанию вызывающего процесса.

Итак, в вашем примере новый процесс будет иметь обычный приоритет.

...