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