關於執行緒訪問類成員的問題

2022-05-21 08:10:30 字數 851 閱讀 6128

當你想用執行緒函式呼叫類的成員函式時,需要將執行緒函式宣告為類的static成員。由於執行緒函式是乙個由系統呼叫的函式,所以是乙個callback函式,所以他不能有this   指標,所以你的執行緒函式要麼是全域性函式,要麼是類的靜態成員。

還有一種好的解決辦法:將執行緒函式申明成友員函式,這樣能夠傳入該類的指標,訪問類的成員,

classcrealtimetask

; uint taskmain(lpvoid param)

bool crealtimetask::starttask()

下面一段**是網上的牛人寫的為了實現執行緒函式訪問類成員而實現的類。作者說比mfc的實現方法好象要好一點,但是我還沒考證,呵呵,有時間驗證一下或者大家幫我驗證一下也可以啊

classbase;

typedef int(base::*fncallback)(void*p);

structcallback(void*param;fncallback *pfuc;base *pthis;};

classbase

public:

voidmycreatethread(fncallback pfuc,void*param)

virtual intmycallback(void*p)

};classderived:publicbase

};voidmycreatethreadimitate(fncallback fuc,void*p)

voidmain()

關於執行緒訪問類成員的問題

當你想用執行緒函式呼叫類的成員函式時,需要將執行緒函式宣告為類的static成員。由於執行緒函式是乙個由系統呼叫的函式,所以是乙個callback函式,所以他不能有this 指標,所以你的執行緒函式要麼是全域性函式,要麼是類的靜態成員。還有一種好的解決辦法 將執行緒函式申明成友員函式,這樣能夠傳入該...

C 執行緒訪問類成員

當你想用執行緒函式呼叫類的成員函式時,需要將執行緒函式宣告為類的static成員。由於執行緒函式是乙個由系統呼叫的函式,所以是乙個callback函式,所以他不能有this 指標,所以你的執行緒函式要麼是全域性函式,要麼是類的靜態成員。還有一種好的解決辦法 將執行緒函式申明成友員函式,這樣能夠傳入該...

執行緒函式訪問類成員的方法

首先談到在c 中建立執行緒的方法,csdn 2010版介紹如下 handle winapi createthread in opt lpsecurity attributes lpthreadattributes,安全屬性,一般設定為null即可 in size t dwstacksize,一般設定...