Closing thread handles from within
When a thread is created, a handle is returned which should be closed when its not used anymore.
Can that handle be closed from within the thread function?
My C++ thread class requires this to be possible, and I also think that it is legal and can be done.
Code:
DWORD WINAPI Petter::Thread::threadProc( void* lpData )
{
//Get the startup data for this thread
ThreadStartupData* threadData = reinterpret_cast<ThreadStartupData*>( lpData );
//Obtain a pointer to the thread
Thread* thread = threadData->thisPtr;
//Save the handle in the thread object
thread->threadHandle = threadData->threadHandle;
//Run the thread's main function
thread->run();
//Close the thread's handle
//WARNING: Can this be done inside the thread?
CloseHandle(threadData->threadHandle);
//Delete the thread object
delete thread;
delete threadData;
return 0;
}