forked from dolphin-emu/dolphin
		
	git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4 8ced0084-cf51-0410-be5f-012b33b47a6e
		
			
				
	
	
		
			82 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "Thread.h"	
 | |
| 
 | |
| namespace W32Util
 | |
| {
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// Constructor
 | |
| 	//
 | |
| 	Thread::Thread ( DWORD (WINAPI * pFun) (void* arg), void* pArg)
 | |
| 	{
 | |
| 		_handle = CreateThread (
 | |
| 			0, // Security attributes
 | |
| 			0, // Stack size
 | |
| 			pFun,
 | |
| 			pArg,
 | |
| 			CREATE_SUSPENDED,
 | |
| 			&_tid);
 | |
| 	}
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// Destructor
 | |
| 	//
 | |
| 	Thread::~Thread (void) 
 | |
| 	{ 
 | |
| 		if (_handle != NULL)
 | |
| 		{
 | |
| 			if (CloseHandle (_handle) == FALSE)
 | |
| 			{
 | |
| 				Terminate();
 | |
| 			}		
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// Resume
 | |
| 	//
 | |
| 	void 
 | |
| 	Thread::Resume (void) 
 | |
| 	{ 
 | |
| 		if (_handle != NULL)
 | |
| 			ResumeThread (_handle); 
 | |
| 	}
 | |
| 
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// WaitForDeath
 | |
| 	//
 | |
| 	void 
 | |
| 	Thread::WaitForDeath (void)
 | |
| 	{
 | |
| 		if (_handle != NULL)
 | |
| 			WaitForSingleObject (_handle, 100);
 | |
| 	}
 | |
| 
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// Terminate
 | |
| 	//
 | |
| 	void 
 | |
| 	Thread::Terminate (void) 
 | |
| 	{ 
 | |
| 		if (_handle != NULL)
 | |
| 			TerminateThread (_handle, 0); 
 | |
| 		_handle = NULL;
 | |
| 	}
 | |
| 
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// SetPriority
 | |
| 	//
 | |
| 	void 
 | |
| 	Thread::SetPriority (int _nPriority) 
 | |
| 	{ 
 | |
| 		if (_handle != NULL)
 | |
| 			SetThreadPriority(_handle, _nPriority); 
 | |
| 	}
 | |
| 
 | |
| 	// __________________________________________________________________________________________________
 | |
| 	// Suspend
 | |
| 	//
 | |
| 	void 
 | |
| 	Thread::Suspend (void) 
 | |
| 	{ 
 | |
| 		if (_handle != NULL)
 | |
| 			SuspendThread(_handle); 
 | |
| 	}
 | |
| } |