在Windows中每个线程都会被赋予一个从0(最低)到31(最高)的优先级号,Microsoft并没有提供任何方法直接获取或设置线程0~31的优先级号,而是采用了进程优先级类+线程相对优先级(相对进程优先级)的模式来提供线程优先级的调节,系统负责将进程优先级类和线程的相对优级映射到0~31的优先级号上,而这种映射方式随操作系统版本升级而变化,同时Microsoft在进行线程调度时也会动态提高线程的优先级。
通过任务管理器可以查看和设置进程优先级,Start命令提供了以指定优先级启动进程的功能
C#调整进程优先级的代码是:
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal;
也可以在Win32API CreateProcess中为创建的进程设置优先级
调整线程优先级的代码是:
Thread t = new Thread(new ThreadStart(ThreadExample.ThreadProc)); t.Priority = ThreadPriority.AboveNormal;
《Windows核心编程》中有对线程优先级的详细描述