来调整进程内的线程优先级,Win32 进程的优先级如表9-2 所示,线程的优先级如表9-3 所
示。
表9-2 进程优先级列表
优先级 优先级值
ABOVE_NORMAL_PRIORITY_CLASS
大于NORMAL_PRIORITY_CLASS,
小于HIGH_PRIORITY_CLASS
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·214·
续表
优先级 优先级值
BELOW_NORMAL_PRIORITY_CLASS
大于IDLE_PRIORITY_CLASS,
小于NORMAL_PRIORITY_CLASS.
HIGH_PRIORITY_CLASS 13
IDLE_PRIORITY_CLASS 4
NORMAL_PRIORITY_CLASS 9(前台)或7(后台)
REALTIME_PRIORITY_CLASS 24
表9-3 线程优先级列表
优先级 级别
THREAD_PRIORITY_ABOVE_NORMAL 比进程优先级高一级
THREAD_PRIORITY_BELOW_NORMAL 比进程优先级低一级
THREAD_PRIORITY_HIGHEST 比进程优先级高两级
THREAD_PRIORITY_LOWEST 比进程优先级低两级
THREAD_PRIORITY_NORMAL 与进程优先级相同
THREAD_PRIORITY_TIME_CRITICAL 把线程优先级设为15
THREAD_PRIORITY_IDLE 把线程优先级设为1
(2)优先级的设置和获取
可以通过调用Win32 API 函数GetThreadPriority 或SetThreadPriority 实现或修改线程优先级
的功能,如果调用成功,返回线程的优先级,否则返回THREAD_PRIORITY_ERROR_RETURN。
GetThreadPriority 的函数原型如下:
int GetThreadPriority(
HANDLE hThread
);
函数中主要参数的意义如下。
? hThread:线程的局柄。
函数SetThreadPriority 用来设定线程的优先级,如果调用成功,返回非0,否则返回0。
它的函数原型如下:
BOOL SetThreadPriority(
HANDLE hThread,
int nPriority
);
函数中主要参数的意义如下。
? hThread:线程的局柄;
? nPriority:要设定的优先级。
在本节最后给出的示例中,读者可以看到如何利用SetThreadPriority 设定一个线程的优
先级。
3.线程ID 的判断
在创建线程的同时,系统会为每个线程生成一个线程I