thread.h

来自「一个c++实现的acd的例子。 ----ACDCommandListener.」· C头文件 代码 · 共 121 行

H
121
字号
#if !defined(Thread_H)
#define Thread_H


#include "SysEvent.h"

//#define UseWin32Thread

#if !defined(UseWin32Thread)
#include <process.h>
#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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?