有没有办法以给定的优先级执行系统命令?

时间:2012-05-31 21:52:18

标签: c++ windows winapi thread-priority

我的意思是这个命令:

system("myprogram.exe");

有没有办法让它以低于正常的优先级模式运行?

3 个答案:

答案 0 :(得分:3)

WINAPI有一个名为CreateProcess()的函数,允许指定优先级:

dwCreationFlags [in]

    The flags that control the priority class and the creation of the process.
For a list of values, see Process Creation Flags.

    This parameter also controls the new process's priority class, which
is used to determine the scheduling priorities of the process's threads.
For a list of values, see GetPriorityClass. If none of the priority class
flags is specified, the priority class defaults to NORMAL_PRIORITY_CLASS
unless the priority class of the creating process is IDLE_PRIORITY_CLASS
or BELOW_NORMAL_PRIORITY_CLASS. In this case, the child process receives
the default priority class of the calling process.

答案 1 :(得分:2)

您可以在应用程序的主线程上使用 SetThreadPriority()

答案 2 :(得分:1)

我认为这是一个更全面的答案:

三种不同的选择(这些不是步骤):

  • CreateProcess 期间,指定进程优先级CLASS(各个线程优先级从进程优先级类派生)。
  • 启动应用程序后,使用 SetPriorityClass 。这使您可以随意更改优先级CLASS。
  • 通过 SetThreadPriority 更改单个主题优先级。它们根据“基本”优先级CLASS上下移动。

有关详细信息,请参阅MSDN。