对于一个应用程序或可执行程序,我如何通过编程来设置它的进程优先级?



主要软件: LabWindows/CVI Development Systems>>LabWindows/CVI Full Development System
主要软件版本: 7.1
主要软件修正版本: N/A
次要软件: N/A

问题:
在Windows 9x/NT/2000/XP中,可以通过Win32 SDK对一个进程通过编程来设定其优先级吗?

解答:
以下就是在Windows 9x下使用的函数。在Windows NT/2000/XP下,在执行这些函数前您必须肯定您有管理员权限。对于任何主要的32-bit 编译器(CVI, Visual C++, Borland C++),可查看 Win32 SDK Help 来获得更多的下列函数的信息。


// CODE FRAGMENT
#include <windows.h>
HANDLE hProcess;
int stat;

hProcess = GetCurrentProcess();
stat = SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS);

SetPriorityClass函数的第二个参数可以设置为:

Windows 2000/XP/Longhorn也支持下列的类:

对2500个点进行冒泡排序...
IDLE 18.34秒
NORMAL 2.28秒
HIGH 1.72 秒
REALTIME 1.57秒


一定要在退出应用程序之前把优先级设回到NORMAL!当您在IDE中运行应用程序时,这是重要的。举个例子,如果您在LabVIEW 或 LabWindows/CVI里这么做的话,实际上您的应用程序是在修改LabVIEW或者LabWindows/CVI的进程优先级。

注意的是,在基于Win32的操作系统下,优先级无法保证CPU的时间分配,它只是一个比其它低优先级的进程/线程运行更快的方法。而且,实时进程优先级也不保证像其它真正的实时操作系统那样的确定性。

相关链接:


附件:





报告日期: 05/17/2006
最近更新: 05/19/2006
文档编号: 0QL86NZL