进程优先级与线程优先级

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程优先级与线程优先级

学习各种高级外挂制作技术,马上去百度搜索"魔鬼作坊",点击第一个站进入,快速成为做挂达人。

SetThreadPriority与SetPriorityClass区别

知识点:

线程优先级

获取当前线程句柄

线程优先级设置

线程优先级变动

线程优先级获取

线程优先级(Thread priority)

简单的说就是(线程)的优先级越高,那么就可以分占相对多的CPU时间片。每个进程都有相应的优先级,优先级决定它何时运行和占用CPU时间。最终的优先级共分32级,是从0到31的数值,称为基本优先级别。

进程优先级priority class标志优先级值

idle(低)IDLE_PRIORITY_CLASS4

Below低于标准BELOW_NORMAL_PRIORITY_CLASS此值在2000以下系统不支持

normal(标准)NORMAL_PRIORITY_CLASS9(前台)或7(后台) Above高于标准ABOVE_NORMAL_PRIORITY_CLASS此值在2000以下系统不支持

high(高)HIGH_PRIORITY_CLASS13

realtime(实时)REALTIME_PRIORITY_CLASS24

一个线程创建的时候,会继承进程的优先级等级。另外线程优先级可以用SetThreadPriority 来进行微调:

线程优先级等级标志优先级值

1idle(最低)THREAD_PRIORITY_IDLE如果进程优先级为realtime则调整为16,其它情况为1

2LOWEST低THREAD_PRIORITY_LOWEST-2(在原有基础上-2)

3BELOW低于标准THREAD_PRIORITY_BELOW_NORMAL -1(在原有基础上-1)

4NORMAL(标准)THREAD_PRIORITY_NORMAL不变(取进程优先级值)

5ABOVE高于标准THREAD_PRIORITY_ABOVE_NORMAL

+1(在原有基础上+1)

6HIGHEST(高)THREAD_PRIORITY_HIGHEST+2(在原有基础上+2)

7CRITICAL(最高)THREAD_PRIORITY_TIME_CRITICAL如果进程优先级为realtime则调整为31,其它情况为15

二、获取当前线程句柄

HANDLE GetCurrentThread(VOID)

//返回当前进句柄

DWORD GetCurrentThreadId(VOID)

//返回当前进程ID值

1、其它线程函数

BOOL SetThreadPriority设置一个线程的优先级别

int GetThreadPriority返回一个线程的优先级别

SetThreadPriorityBoost设置线程是否禁用动态调整优先级功能。GetThreadPriorityBoost获取线程是否禁用了优先级微调功能。

三、线程优先级的设置

BOOL SetThreadPriority

(

HANDLE hThread,//线程句柄handle to the thread

int nPriority//要设置线程优先级别thread priority level

);

void CDialog_PROCESS::OnBnClickedRadio7()

{

//TODO:在此添加控件通知处理程序代码

BOOL r=0;

UpdateData(true);

switch(m_radio_thread_selNum)

{

case0:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_IDLE);//设置为最低

TRACE("thread=%d,%04x set priority to THREAD_PRIORITY_IDLE

\n",GetCurrentThreadId(),GetCurrentThreadId());

break;

case1:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST);//设置为较低

TRACE("thread=%d,%04x set priority to THREAD_PRIORITY_LOWEST \n",GetCurrentThreadId(),GetCurrentThreadId());

break;

case2:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_BELOW_NORMAL);//设置为低于标准

TRACE("thread=%d,%04X set priority to

THREAD_PRIORITY_BELOW_NORMAL\n",GetCurrentThreadId(),GetCurrentThreadId());

break;

case3:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL); //设置为标准

TRACE("thread=%d,%04X set priority to

THREAD_PRIORITY_NORMAL\n",GetCurrentThreadId(),GetCurrentThreadId());

break;

case4:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL);//设置为高于标准

TRACE("thread=%d,%04X set priority to

THREAD_PRIORITY_ABOVE_NORMAL\n",GetCurrentThreadId(),GetCurrentThreadId());

break;

case5:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST); //设置为较高

TRACE("thread=%d,%04X set priority to

THREAD_PRIORITY_HIGHEST\n",GetCurrentThreadId(),GetCurrentThreadId());

break;

case6:

r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);//设置为最高

TRACE("thread=%d,%04X set priority to

THREAD_PRIORITY_TIME_CRITICAL\n",GetCurrentThreadId(),GetCurrentThreadId());

break;

default:

break;

}

}

相关文档
最新文档