AfxBeginThread建立執行緒並指定優先順序

2021-07-14 04:24:45 字數 1524 閱讀 8182

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指定優先順序。

boolsetthreadpriority(

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

AfxBeginThread 幹了什麼?

跟一跟afxbeginthread的原始碼就可以很容易的發現,它呼叫了 beginthreadex,注意這傢伙傳遞的可不是你傳進去的函式函式指標,它傳的是 afxthreadentry和乙個 afx thread startup的結構,那我們的函式指標和引數呢?哦,原來都被封裝到 afx threa...

AfxBeginThread函式初探

在進行多執行緒程式設計的時候,我們經常用到afxbeginthread函式來啟動一條執行緒 該函式使用起來非常的簡單方便,其定義如下 cwinthread afxbeginthread afx threadproc pfnthreadproc,執行緒函式位址 lpvoid pparam,執行緒引數 ...

AfxBeginThread建立執行緒

使用者介面執行緒和工作者執行緒都是由afxbeginthread建立的。mfc提供了兩個過載版的afxbeginthread,乙個用於使用者介面執行緒,另乙個用於工作者執行緒,分別有如下的原型 使用者介面執行緒的afxbeginthread的原型如下 cwinthread afxapi afxbeg...