ckv*_*ckv 1 c++ mfc multithreading
假设我有一个指向这样的线程的指针
CWinThread *m_pThread = AfxBeginThread(StartThread, this, THREAD_PRIORITY_NORMAL, 0, 0);
Run Code Online (Sandbox Code Playgroud)
现在在我的StartThread函数中假设我完成了所有操作并且函数返回了这样
UINT CClassThread::StartThread(LPVOID pVoid)
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
执行return语句时,我的m_pThread会无效吗?
是的,它将无效,因为它将在线程的末尾被删除.但是,如果设置CWinThread::m_bAutoDelete为FALSE,CWinThread*则不会删除.我只是用Google搜索答案并在此处找到:http: //msdn.microsoft.com/en-us/library/48xz4yz9(VS.80).aspx
顺便说一句,如果你使用的是pthreads(Unix线程),那么答案就是否定的.当一个线程终止时,它的句柄保持有效,直到你调用pthread_join(等待一个线程完成,释放它,并获得它的返回值)或pthread_detach(告诉一个线程在它完成时解除分配).