Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
1.5 KiB

#include <process.h>
#include "PassportThread.hpp"
#include "PassportAssert.hpp"
static DWORD WINAPI threadRunner(void* lpvThreadParam)
{
((PassportThread*) lpvThreadParam)->run();
return 0; // is this right/okay??
}
bool PassportThread::start()
{
// mHandle = (HANDLE) _beginthreadex(NULL, 0, &threadRunner, (void*) this,
// 0, &mThreadID);
mHandle = CreateThread(NULL,
0,
threadRunner,
(void*)this,
0,
&mThreadID);
if (mHandle == NULL)
return false;
else
return true;
}
PassportThread::PassportThread()
:mThreadID(0), mHandle(NULL)
{
//empty
}
DWORD PassportThread::threadID()
{
return mThreadID;
}
PassportThread::~PassportThread()
{
if (mHandle)
CloseHandle(mHandle);
}
bool PassportThread::join(PassportThread* threads[], int size)
{
HANDLE* handles = new HANDLE[size];
if (handles == NULL)
{
return false;
}
for (int i = 0 ; i < size ; i++)
{
PassportAssert(threads[i] != NULL);
handles[i] = threads[i]->mHandle;
}
bool success = (WaitForMultipleObjects(size, handles, TRUE, INFINITE) != WAIT_FAILED);
delete[] handles;
return success;
}
void PassportThread::sleep(long milliseconds)
{
Sleep(milliseconds);
}
DWORD PassportThread::currentThreadID()
{
return GetCurrentThreadId();
}