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 );
}