1、动态提高线程的优先级等级
通过将线程的相对优先级与线程的进程优先级类综合起来考虑,系统就可以确定线程的优先级等级。有时这称为线程的基本优先级等级。系统常常要提高线程的优先级等级,以便对窗口消息或读取磁盘等I / O事件作出响应。
系统只能为基本优先级等级在 1至1 5之间的线程提高其优先级等级,这个范围称为动态优先级范围。
BOOL SetProcessPriorityBoost(HANDLE hProcess ,BOOL DisablePriorityBoost);
BOOL SetThreadPriorityBoost(HANDLE hThread,BOOL DisablePriorityBoost);
SetProcessPriorityBoost激活或停用进程中的所有线程的优先级提高功能,SetThreadPriorityBoost激活或停用各个线程的优先级提高功能。
BOOL GetProcessPriorityBoost(HANDLE hProcess,PBOOL pDisablePriorityBoost);
BOOL GetThreadPriorityBoost(HANDLE hThread,PBOOL pDisablePriorityBoost);
可以传递想要查询的进程或线程的句柄,以及由函数设置的B O O L的地址。
2、为前台进程调整调度程序
当用户对进程的窗口进行操作时,该进程就称为前台进程,所有其他进程则称为后台进程。Windows能够为前台进程中的线程调整其调度算法。
十、亲缘性
Windows 2000允许设置进程和线程的亲缘性。换句话说,可以控制哪个C P U能够运行某些线程。这称为硬亲缘性。
BOOL SetProcessAffinityMask(HANDLE hProcess, DWORD_PTR dwProcessAffinityMask);
hProcess用于指明哪个进程。dwProcessAffinityMask是位屏蔽,指定线程可以在哪些C P U上运行。子进程可以继承进程的亲缘性。
BOOL GetProcessAffinityMask(HANDLE hProcess,PDWORD_PTR pdwProcessAffinityMask,
PDWORD_PTR pdwSystemAffinityMask);
函数返回进程的亲缘性位屏蔽。系统的亲缘性屏蔽用于指明系统的哪个C P U能够处理线程。进程的亲缘性屏蔽始终是一个系统的亲缘性屏蔽的正确子集。
DWORD_PTR SetThreadAffinityMask (HANDLE hThread
DWORD_ PTR dwThreadAffinityMask);
为线程设置亲缘性屏蔽,hThread要限制的线程dwThreadAffinityMask该线程在哪个CPU上运行。