线程调度、优先级、亲和力
(1)ResumeThread
被挂起的线程不会被调度
(2)SuspendThread
当线程正在堆分配内存时(会给这个堆加上锁),
Code
Windows中并不存在挂起和恢复进程的概念。因为
我们可以把挂起进程理解为挂起进程中所有的线程。
CreateToolhelp32Snapshot只是创建某个进程在某一时刻的快照
这么做容易出一些问题
(1)Sleep
线程调用
Sleep(0)的意思是让当前线程让出
(2)SwitchThread
与
不同的是
(1)设置优先级
线程的优先级和进程的优先级是相关的。改变进程的优先级会同时改变线程的优先级。也可把进程的优先称做线程的基优先级。
虽然进程有优先级但进程并不可调度,进程优先级只是种抽象的概念,帮助我们脱离调度器的内部工作原理。
SetPriorityClass和
SetThreadPriority和
(2)动态提升优先级
默认情况下
设置或获取线程或进程的动态优先级设置。从而允许或禁止系统动态提升优先级。
SetProcessPriorityBoost,
GetProcessPriorityBoost,
SetProcessAffinityMask 限制某进程中的线程
SetThreadAffinityMask 限制线程只能在指定的
GetSystemInfo() 查看
DWORD ResumeThread(HANDLE hThread);
DWORD SuspendThread(HANDLE hThread);
CreateToolhelp32Snapshot()
Thread32First()
Thread32Next()
Sleep()
GetThreadContext()
SetThreadContext()

浙公网安备 33010602011771号