📄 thread.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -