Files
2017-05-30 22:09:10 +08:00

81 lines
1.6 KiB
C++

/*******************************************************************************
* @file TTThread.cpp 2014\7\1 16:04:19 $
* @author żěľś<kuaidao@mogujie.com>
* @brief windowsĎ̴߳ŚŔíľÄ°ü×°
******************************************************************************/
#include "stdafx.h"
#include "utility/TTThread.h"
/******************************************************************************/
NAMESPACE_BEGIN(util)
// -----------------------------------------------------------------------------
// TTThread: Public, Constructor
TTThread::TTThread()
:m_hThread(0)
{
}
// -----------------------------------------------------------------------------
// TTThread: Public, Destructor
TTThread::~TTThread()
{
if (m_hThread)
::CloseHandle(m_hThread);
m_hThread = 0;
}
BOOL TTThread::create()
{
m_hThread = (HANDLE)_beginthreadex(0,0, _threadProc, this, 0, (unsigned*)&m_dwThreadID);
if (m_hThread < (HANDLE)2)
{
m_hThread = 0;
m_dwThreadID = 0;
}
return m_hThread >(HANDLE)1;
}
void TTThread::destory()
{
if (m_hThread)
{
::TerminateThread(m_hThread, 0);
WaitForSingleObject(m_hThread, 500);
::CloseHandle(m_hThread);
m_hThread = 0;
m_dwThreadID = 0;
}
}
BOOL TTThread::wait(DWORD dwWaitTime)
{
if (m_hThread == 0)
return TRUE;
return (::WaitForSingleObject(m_hThread, dwWaitTime) != WAIT_TIMEOUT);
}
UInt32 TTThread::process()
{
return 0;
}
UInt32 __stdcall TTThread::_threadProc(void *lpParam)
{
TTThread* pThread = (TTThread*)lpParam;
assert(pThread);
if (pThread != 0)
{
pThread->process();
}
return 0;
}
NAMESPACE_END(util)
/******************************************************************************/