00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackThread__
00022 #define __JackThread__
00023
00024 #ifdef WIN32
00025 #include <windows.h>
00026 typedef HANDLE pthread_t;
00027 typedef ULONGLONG UInt64;
00028 #else
00029 #include <pthread.h>
00030 typedef unsigned long long UInt64;
00031 #endif
00032
00033 namespace Jack
00034 {
00035
00040 class JackRunnableInterface
00041 {
00042
00043 public:
00044
00045 JackRunnableInterface()
00046 {}
00047 virtual ~JackRunnableInterface()
00048 {}
00049
00050 virtual bool Init()
00051 {
00052 return true;
00053 }
00054 virtual bool Execute() = 0;
00055 };
00056
00061 class JackThread
00062 {
00063
00064 protected:
00065
00066 JackRunnableInterface* fRunnable;
00067 int fPriority;
00068 bool fRealTime;
00069 volatile bool fRunning;
00070 int fCancellation;
00071
00072 public:
00073
00074 JackThread(JackRunnableInterface* runnable, int priority, bool real_time, int cancellation):
00075 fRunnable(runnable), fPriority(priority), fRealTime(real_time), fRunning(false), fCancellation(cancellation)
00076 {}
00077 virtual ~JackThread()
00078 {}
00079
00080 virtual int Start() = 0;
00081 virtual int StartSync() = 0;
00082 virtual int Kill() = 0;
00083 virtual int Stop() = 0;
00084
00085 virtual int AcquireRealTime() = 0;
00086 virtual int AcquireRealTime(int priority) = 0;
00087 virtual int DropRealTime() = 0;
00088
00089 virtual void SetParams(UInt64 period, UInt64 computation, UInt64 constraint)
00090 {}
00091
00092 virtual pthread_t GetThreadID() = 0;
00093 };
00094
00095 }
00096
00097 #endif