thread.h

来自「oracle下调用数据泵接口进行远程数据导出和导入(数据恢复)的CORBA服务」· C头文件 代码 · 共 111 行

H
111
字号
#ifndef MTLTHREAD_H_#define MTLTHREAD_H_#ifdef __UNIX__#include <pthread.h>#endif#ifdef _WIN32#include <windows.h>#endifclass Thread_T{private:	#ifdef _WIN32	HANDLE m_threadHandle;	DWORD threadID;	#endif		#ifdef __UNIX__	pthread_t threadID;	#endif	bool live;	bool hasJoined;public:	Thread_T():live(false),hasJoined(false){};		//return thread ID	#ifdef _WIN32		DWORD getID() const;	#endif	#ifdef __UNIX__	pthread_t getID() const;	#endif		//create and start the thread	void start();		//let the caller wait for syncronization	void join();		//stop the thread	void stop();		//return true is thread is running or wait	//else return false	bool isAlive() const;		//when run return , set the Thread live state to be false	void setDead();		//the function that will run in thread	virtual void run() = 0;		virtual ~Thread_T();};template <class T> class ThreadHandleT;typedef ThreadHandleT<Thread_T> ThreadHandle;//this function will be executed in thread//the arg is an object of MTLThread including derived object#ifdef __UNIX__void* thread_routine(void* arg);#endif #ifdef _WIN32DWORD WINAPI thread_routine(LPVOID arg);#endiftemplate <class T>class ThreadHandleT{private:	T* m_ptr;public:	ThreadHandleT(T* ptr = 0):m_ptr(ptr){};		ThreadHandleT<T>& operator=(T* rhs)	{		if (rhs != NULL)		{			delete m_ptr;		}		m_ptr = rhs;		return *this;	}	    	bool operator!() const { return m_ptr == 0; }    	operator bool() const { return m_ptr != 0; }	    	T* operator->() const { return m_ptr; }    	T* get() const { return m_ptr; }    	T& operator*() { return *m_ptr; }    	    	virtual ~ThreadHandleT()    	{    		if (m_ptr == NULL)    			return;    		delete m_ptr;    	}	};#endif

⌨️ 快捷键说明

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