LabVIEW中编程更改进程的优先级 点击:624 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:552帖 | 36回
  • 年度积分:703
  • 历史总积分:1294
  • 注册:2008年8月14日
发表于:2022-07-26 20:41:53
楼主
LabVIEW中编程更改进程的优先级
在labVIEW中可以调用kernel32动态链接库来更改进程的优先级。需要两个函数:GetCurrentProcess()和SetPriorityClass()。
有6个优先级可供选择,这6个优先级及其标识码列表如下:
空闲(IDLE):   IDLE_PRIORITY_CLASS
次低(BELOWNORMAL):    BELOW_NORMAL_PRIORITY_CLASS
普通(NORMAL):   NORMAL_PRIORITY_CLASS
次高(ABOVENORMAL):    ABOVE_NORMAL_PRIORITY_CLASS
高级(HIGHPRIORITY):      HIGH_PRIORITY_CLASS
实时(REALTIME):       REALTIME_PRIORITY_CLASS
在LabVIEW中,首先建立一个调用库函数节点,并指向kernel32.dll(一般位于c:\windows\system32)。建立调用后函数原型的样子为:
unsigned longGetCurrentProcess(void)
因为这是调用了Windows的API函数,调用方式改为stdcall(WINAPI)。第二个调用库函数VI与第一个相似,除了使用SetPriorityClass函数。建立第二个调用库函数节点后函数原型的样子为:
unsigned longSetPriorityClass(unsigned long handle, unsigned long priority)
同样的,调用方式改为stdcall(WINAPI)。 GetPriorityClass函数的返回值与SetPriorityClass函数的句柄相关,相应的优先级类型是十六进制 (hex)。在winbase.h文件中(包含在Microsoft的WIN32 SDK中),可以找到定义优先级的声明。它们是:
#defineIDLE_PRIORITY_CLASS 0x00000040
#defineBELOW_NORMAL_PRIORITY_CLASS 0x00004000
#define NORMAL_PRIORITY_CLASS0x00000020
#defineABOVE_NORMAL_PRIORITY_CLASS 0x00008000
#defineHIGH_PRIORITY_CLASS 0x00000080
#defineREALTIME_PRIORITY_CLASS 0x00000100
使用这些值,可以指定线程的优先级。举例来说,如果想把进程的优先级设置为空闲(IDLE),只要在调用库函数节点的输入端连上一个十六进制值为40的常数就好了。
打开、运行附件中的例子。运行例子的时候,打开Windows的任务管理器,在更改LabVIEW程序的优先级的时候可以观察LabVIEW优先级的状态。

添加图片注释,不超过 140 字(可选)


LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系我们。




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师