www.pudn.com > acdx.rar > Thread.h


#if !defined(Thread_H) 
#define Thread_H 
 
 
#include "SysEvent.h" 
 
//#define UseWin32Thread 
 
#if !defined(UseWin32Thread) 
#include  
#endif 
 
//////////////////////////////////////////////////////////////////////// 
// Thread  
 
//##ModelId=424BB6400288 
class Thread 
{ 
public: 
	enum 
	{ 
		idCancel, 
		idSuspend, 
		idResume, 
		idEnd, 
		idNoEvents 
	}; 
 
private: 
	 
	//##ModelId=424BB6400289 
	static long	m_delayTime;			// define time to delay for a thread sleep  
 
	//##ModelId=424BB6400298 
	void *		m_pThreadData;			// data for this thread 
 
	//##ModelId=424BB64002A7 
	HANDLE		m_hThread;				// handle to thread 
	//##ModelId=424BB64002A8 
	DWORD		m_idThread;				// id of thread 
	//##ModelId=424BB64002B8 
	SysEvent	m_events[idNoEvents];	// base thread events 
 
public: 
	//##ModelId=424BB64002C6 
	Thread (); 
	//##ModelId=424BB64002C7 
	~Thread (); 
 
 
	// create/destroy 
	//##ModelId=424BB64002C8 
	bool 		create			( void * pThreadData = NULL ); 
	//##ModelId=424BB64002D6 
	void		release			(); 
 
 
	// thread methods 
	//##ModelId=424BB64002D7 
	void *		getData			()				{ return m_pThreadData; } 
	//##ModelId=424BB64002D8 
	HANDLE		getHandle		()				{ return m_hThread; } 
	//##ModelId=424BB64002D9 
	DWORD		getId			()				{ return m_idThread; } 
 
	// event methods 
	//##ModelId=424BB64002E6 
	bool		createThreadEvents (); 
 
	//##ModelId=424BB64002E7 
	HANDLE		getEvent		( long id )		{ return m_events[id].getEvent(); } 
	//##ModelId=424BB64002F5 
	void		setEvent		( long id )		{ m_events[id].set(); } 
	//##ModelId=424BB64002F7 
	void		resetEvent		( long id )		{ m_events[id].reset(); } 
 
	//##ModelId=424BB6400305 
	HANDLE		getEndEvent		()				{ return m_events[idEnd].getEvent(); } 
	//##ModelId=424BB6400306 
	void		setEndEvent		()				{ m_events[idEnd].set(); } 
 
	//##ModelId=424BB6400307 
	HANDLE		getCancelEvent	()				{ return m_events[idCancel].getEvent(); } 
	//##ModelId=424BB6400308 
	void		setCancelEvent	()				{ m_events[idCancel].set(); } 
	//##ModelId=424BB6400315 
	void		resetCancelEvent	()			{ m_events[idCancel].reset(); } 
 
	// control 
	//##ModelId=424BB6400316 
	void		stop			(); 
	//##ModelId=424BB6400317 
	void		suspend			(); 
	//##ModelId=424BB6400318 
	void		resume			(); 
	//##ModelId=424BB6400324 
	void		cancel			(); 
 
 
	// run method 
	//##ModelId=424BB6400325 
	virtual long run  (); 
 
	// virtual idle method  
	//##ModelId=424BB6400327 
	virtual void idle () 
	{} 
 
	// static thread proc 
	#if defined(UseWin32Thread) 
	//##ModelId=424BB6400335 
	static DWORD WINAPI		 threadProc		( LPVOID parameter ); 
 
	#else 
	static unsigned _stdcall threadProc		( LPVOID parameter ); 
	#endif 
}; 
 
 
#endif