若何安全终止线程[VC/C++编程]
本文“若何安全终止线程[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于Worker线程,终止线程可以利用线程的退出码作为返回值从线程函数返回.
关于UI线程,因为有消息循环,需求发送一个WM_QUIT消息到线程的消息行列,当线程接纳到WM_QUIT消息时退出消息循环.因此,完毕线程可以在线程内部调用SDK的PostQuitMessage函数,发送WM_QUIT消息.
PostQuitMessage函数的定义以下:
void PostQuitMessage(int nExitCode);
此中:
nExitCode:线程的退出码.
MFC还供应了AfxEndThread函数,Worker线程和UI线程都可以通过在线程内部调用AfxEndThread函数完毕线程.
AfxEndThread函数的定义以下:
void AfxEndThread(UINT nExitCode, BOOL bDelete = TRUE);
此中:
nExitCode:线程的退出码.
在MFC的THRDCORE.CPP中,AfxEndThread函数的相关代码以下:
// THRDCORE.CPP
void AFXAPI AfxEndThread(UINT nExitCode, BOOL bDelete)
{
// remove current CWinThread object from memory
AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
CWinThread* pThread = pState->m_pCurrentWinThread;
if (pThread != NULL)
{
ASSERT_VALID(pThread);
ASSERT(pThread != AfxGetApp());
// cleanup OLE if required
if (pThread->m_lpfnOleTermOrFreeLib != NULL)
(*pThread->m_lpfnOleTermOrFreeLib)(TRUE, FALSE);
if (bDelete)
pThread->Delete();
pState->m_pCurrentWinThread = NULL;
}
// allow cleanup of any thread local objects
AfxTermThread();
// allow C-runtime to cleanup, and exit the thread
_endthreadex(nExitCode);
}
以上是“若何安全终止线程[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:操纵CB成立用户自己的网上聊天程序
- ·下一篇文章:<b>软件接口的历史和将来</b>
- ·中查找“若何安全终止线程”更多相关内容
- ·中查找“若何安全终止线程”更多相关内容