AfxBeginThread的介紹 基本用法

2021-10-04 06:23:15 字數 1234 閱讀 2238

afxbeginthread

mfc提供了兩個過載版的afxbeginthread,乙個用於使用者介面執行緒,另乙個用於工作者執行緒,區別在於使用者介面執行緒能處理訊息響應,而工作者執行緒不能。其原型和過程:

使用者介面執行緒的afxbeginthread

使用者介面執行緒的afxbeginthread的原型如下:

cwinthread* afxapi afxbeginthread

(cruntimeclass* pthreadclass,

int npriority,

uint nstacksize,

dword dwcreateflags,

lpsecurity_attributes lpsecurityattrs)

工作者執行緒的afxbeginthread

工作者執行緒的afxbeginthread的原型如下:

cwinthread* afxapi afxbeginthread

(afx_threadproc pfnthreadproc,

lpvoid pparam,

int npriority,

uint nstacksize,

dword dwcreateflags,

lpsecurity_attributes lpsecurityattrs)

其中:

引數1 執行緒的入口函式,宣告一定要如下: uint mythreadfunction( lpvoid pparam );

引數2 傳遞入執行緒的引數,注意它的型別為:lpvoid,所以我們可以傳遞乙個結構體入執行緒.

引數3、4、5分別指定執行緒的優先順序、堆疊大小、建立標識、安全屬性,含義同使用者介面執行緒。

afxbeginthread除前面兩個引數外,後面幾個都是預設引數,可以省略。前兩個引數中,第乙個是執行緒函式的指標,第二個是傳遞給這個函式的引數。實際中我們經常這樣用:

afxbeginthread

(threadproc,

this

);

把this傳過去,執行緒函式就可以使用和操作類的成員了。千萬要注意執行緒函式是靜態類函式成員

附錄a:

結束執行緒的兩種方式:

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...