AfxBeginThread创建线程并指定优先级

时间:2022-01-17 23:54:41

AfxBeginThread

CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, intnPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags= 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

CWinThread *m_pThread = AfxBeginThread(ThreadTest,0,THREAD_PRIORITY_HIGHEST,0,NULL);//调用测试线程

当线程弹出一个对话框再做相关操作时有可能会卡死的情况,这时我们可以在创建线程时调整一个线程的优先级,或者使用SetThreadPriority指定优先级。

BOOL SetThreadPriority( HANDLE hThread, // handle to the thread int nPriority // thread priority level ); 功能说明 设置指定线程的优先级 参数说明
  线程优先级等级 标志 优先级值
1 idle (最低) THREAD_PRIORITY_IDLE 如果进程优先级为realtime则调整为16,其它情况为1
2 LOWEST 低 THREAD_PRIORITY_LOWEST -2(在原有基础上-2)
3 BELOW 低于标准 THREAD_PRIORITY_BELOW_NORMAL -1(在原有基础上-1)
4 NORMAL(标准) THREAD_PRIORITY_NORMAL 不变(取进程优先级值)
5 ABOVE 高于标准 THREAD_PRIORITY_ABOVE_NORMAL +1(在原有基础上+1)
6 HIGHEST (高) THREAD_PRIORITY_HIGHEST +2(在原有基础上+2)
7 CRITICAL(最高) THREAD_PRIORITY_TIME_CRITICAL 如果进程优先级为realtime则调整为31,其它情况为15