www.gusucode.com > 让程序自动管理线程的代码C++源码程序 > 让程序自动管理线程的代码/TestManagerThread/testmanagerthread/ThreadManager.cpp
// ThreadManager.cpp: implementation of the ThreadManager class. // ////////////////////////////////////////////////////////////////////// //************************************************************* //作者:赵明 //EMAIL:zmpapaya@hotmail.com;papaya_zm@sina.com //主页:http://h2osky.126.com /********************************************************/ #include "stdafx.h" //#include "managerthread.h" #include "ThreadManager.h" #include "ThreadTask.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// ThreadManager::ThreadManager(ThreadPro threadpro, LPVOID pParam) { DWORD nThreadId = 0; _ASSERTE( ThreadTask::GetThreadTask().IsValid() ); m_Handle = (HANDLE)::CreateThread(NULL,0,threadpro,(LPVOID)pParam,0,&nThreadId ); if ( ThreadTask::GetThreadTask().m_bKeepGoing ) { ASSERT( m_Handle ); ThreadTask::GetThreadTask().AddHandle( m_Handle ); } else { static BOOL bDisplayed = FALSE; static BOOL scbThreadCareTaker_IsValid_Failed = FALSE; if ( !bDisplayed ) { bDisplayed = TRUE; _ASSERTE( scbThreadCareTaker_IsValid_Failed ); bDisplayed = FALSE; } } } ThreadManager::~ThreadManager() { } BOOL ThreadManager::RunThread() { return( ::ResumeThread( m_Handle ) != 0xFFFFFFFF ); }