Files
mir_server/Gateway/srvlib/include/x_thread.h

82 lines
2.0 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _LIB_THREAD_H_
#define _LIB_THREAD_H_
/******************************************************************
* - <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -
* ʵ<EFBFBD><EFBFBD><EFBFBD>̵߳Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>̣߳<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
#ifndef _MSC_VER
#include "pthread.h"
#endif
namespace thread
{
class BaseThread
{
private:
#ifdef _MSC_VER
static void CALLBACK ThreadRoutine(BaseThread* thread_ptr);
#else
static void* ThreadRoutine(void* thread_ptr);
#endif
protected:
//terminated<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ֳ<EFBFBD><D6B3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
inline bool terminated()
{
return terminated_;
}
//<2F>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFB4A6><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>̳д˺<D0B4><CBBA><EFBFBD>
virtual void OnRoutine();
//<2F>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>
virtual void OnTerminated();
public:
BaseThread();
virtual ~BaseThread();
#ifdef _MSC_VER
//<2F><>ȡ<EFBFBD>߳̾<DFB3><CCBE><EFBFBD>
inline void* getHandle()
{
return thread_;
}
//<2F><>ȡ<EFBFBD>߳<EFBFBD>ID
inline unsigned long getThreadId()
{
return thread_id_;
}
#endif
//<2F>ָ<EFBFBD><D6B8>̵߳<DFB3>ִ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ʾ<EFBFBD>̵߳<DFB3><CCB5><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ٴβ<D9B4><CEB2>ָܻ<DCBB>ִ<EFBFBD>С<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD>ʾ<EFBFBD>ָ<EFBFBD><D6B8>߳<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD>߳<EFBFBD><DFB3>Ѿ<EFBFBD><D1BE><EFBFBD>ȫ<EFBFBD>ָ<EFBFBD>ִ<EFBFBD>С<EFBFBD>
virtual int Start();
virtual void Stop();
#ifdef _MSC_VER
//<2F><>ȡ<EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ȼ<EFBFBD><>ܻ᷵<DCBB><E1B7B5>THREAD_PRIORITY_ERROR_RETURN<52><4E><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>ֵ<EFBFBD><D6B5>ʾ<EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ȼ<EFBFBD>
int getPriority();
//<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>򷵻<EFBFBD>true
bool setPriority(int priority);
#endif
//<2F>ȴ<EFBFBD><C8B4>߳<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>wait_time<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>INFINITE<54><45>ʾ<EFBFBD><CABE><EFBFBD>޵ȴ<DEB5><C8B4><EFBFBD>
//ע<><EFBFBD><E2A3AC><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3>ڴ<EFBFBD><DAB4>߳<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
//<2F><><EFBFBD><EFBFBD>wait_alert<72><74>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBEAF>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>windows<77><73>Ч)
#ifdef _MSC_VER
int waitFor(unsigned int wait_time = INFINITE, bool wait_alert = true);
#else
int waitFor();
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD>̵߳<DFB3><CCB5><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
void terminate();
private:
#ifdef _MSC_VER
void* thread_; //<2F>߳̾<DFB3><CCBE><EFBFBD>
unsigned long thread_id_; //<2F>߳<EFBFBD>ID
#else
pthread_t thread_id_;
#endif
bool terminated_; //<2F>߳<EFBFBD><DFB3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>terminated<65><64><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>߳<EFBFBD><DFB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
};
};
#endif