C++中的线程函数如何访问类中的成员变量

2024年11月03日 22:41
有1个网友回答
网友(1):

有两种方法:a.
定义线程函数为全局函数
b.
定义线程函数为类的静态成员函数
针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个适配器,在适配器中调用类的非静态成员函数。例如:
class
CMyClass{public:
void
TestFunc();
static
int
ThreadFunc(LPVOID
pParam);//
Adapterprotected:
int
ThreadFuncKernal();//
Kernal}void
CMyClass::TestFunc(){
AfxBeginThread(TreadFunc,
this);}//
Thread
function
Adapter
int
CMyClass::ThreadFunc(LPVOID
pParam){
CMyClass
*pObj
=
(CMyClass
*)pParam;
return
pObj-ThreadFuncKernal();}//
Thread
function
kernal
int
CMyClass::ThreadFuncKernal(){while(1){