C++,window环境,为什么全局的线程函数使用类的成员函数有时候会出错?该类是通过线程参数传递进去的,怎么解决啊
C++,window环境,为什么全局的线程函数使用类的成员函数有时候会出错?该类是通过线程参数传递进去的,如何解决啊?
m_hThread = (HANDLE)_beginthreadex(NULL,0,ClientThread,this,0,NULL);
//线程函数
unsigned int WINAPI ClientThread(LPVOID lpParam)
{
CSocketThread *pSocketThread = (CSocketThread*)lpParam;
CMainWin *pMainWin = pSocketThread->Get_pMainWin();//偶尔出错
ECOMMUNICATETYPE eKind = pSocketThread->Get_eCommunicateType();////偶尔出错
char* chrRecBuffer = pSocketThread->GetRevBuf();//偶尔出错
}
------解决方案--------------------
类对象的生命周期比线程长吗?
------解决方案--------------------
你的意思是在类里面创建线程 然后通过参数传递在全局(非该类对象)处调用该线程么?是的话你能保证创建线程的对象 的生命周期在你调用函数(全局)时的存在性么?
m_hThread = (HANDLE)_beginthreadex(NULL,0,ClientThread,this,0,NULL);
//线程函数
unsigned int WINAPI ClientThread(LPVOID lpParam)
{
CSocketThread *pSocketThread = (CSocketThread*)lpParam;
CMainWin *pMainWin = pSocketThread->Get_pMainWin();//偶尔出错
ECOMMUNICATETYPE eKind = pSocketThread->Get_eCommunicateType();////偶尔出错
char* chrRecBuffer = pSocketThread->GetRevBuf();//偶尔出错
}
C++
多线程
------解决方案--------------------
类对象的生命周期比线程长吗?
------解决方案--------------------
你的意思是在类里面创建线程 然后通过参数传递在全局(非该类对象)处调用该线程么?是的话你能保证创建线程的对象 的生命周期在你调用函数(全局)时的存在性么?