用非靜態類成員函式作為執行緒函式

2021-05-21 18:22:19 字數 508 閱讀 5116

非靜態的類成員函式是不能直接作為執行緒函式的,如果把成員函式宣告為靜態,可以解決問題,但是靜態函式只能訪問類

的靜態成員,這又帶來很多麻煩。

不過可以通過包裝解決此問題,如下:

class test

private:

void func();//實際需要作為執行緒函式的函式

public:

static unsinged int _stdcall functread(pvoin pvparam)  // 建立執行緒是傳入的函式

(test*) ptest = (test*)pvparam;

ptest-->func();

建立執行緒:

unsigned int  dwthreadid;

handle htreadserver =(handle) _beginthreadex(null,0,test::functread,(pvoid)this,0,&dwthreadid);

再利用mfc進行多執行緒程式設計時應該經常用到。

非靜態成員作為執行緒函式

關於this指標的傳遞問題總結 1 cdecl成員函式 通過ecx傳遞this指標 mov ecx,物件的位址 call 成員函式 2 stdcall成員函式 通過堆疊傳遞this指標 push 物件的位址 call 成員函式 用非靜態成員作為執行緒函式 原理分析 1.該執行緒的主函式為類的非靜態成...

類成員函式作為執行緒函式

include windows.h include class exampletask void exampletask taskmain lpvoid param void exampletask starttask int main int argc,char argv 出現編譯錯誤 error...

類成員函式作為執行緒函式

黙 座 類成員函式作為執行緒函式 2011 01 10 14 54 43 分類 windows 字型大小 訂閱 類成員函式不能作為執行緒函式 一般來說,c 的類成員函式不能作為執行緒函式。這是因為在類中定義的成員函式,編譯器會給其加 上this指標。請看下列程式 include windows.h ...