【windows线程】线程资源创建与释放

来源:互联网 发布:淘宝生意参谋要钱吗 编辑:程序博客网 时间:2024/04/27 22:26
接口AfxBeginThread 
CWinThread* AfxBeginThread(   AFX_THREADPROC pfnThreadProc,   LPVOID pParam,   int nPriority = THREAD_PRIORITY_NORMAL,   UINT nStackSize = 0,   DWORD dwCreateFlags = 0,   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
Tips:
1 创建线程缺省情况下,创建线程执行线程任务,任务完成后,创建线程的资源句柄CWinthread资源均会被释放。
2 不需要调用CloseHandle CWinthread->m_hThread,也不需要delete CWinthread*,否则会出现异常
3 如果设置m_bAutoDelete=False,那么需要delete CWinthread*释放资源否则句柄和内存泄露,释放是不需调用CloseHandle。
异常信息:处最可能的异常: 0xC0000008: An invalid handle was specified
线程退出
退出接口AfxEndThread 
该接口只能在要退出线程中调用。
获取线程退出的的GetExitCodeThread 2种方法。
1、设置 m_bAutoDelete 不释放,其他线程调用该线程后释放线程
2、The safest way to do this is to pass CREATE_SUSPENDED to AfxBeginThread, store the handle, and then resume the thread by calling ResumeThread
       ::DuplicateHandle执行线程前拷贝handle。 注意最后需要CloseHandle释放句柄资源。 否则会造成资源泄露。
0 0
原创粉丝点击