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 virtual void Terminate() = 0;
00085
00086 virtual int AcquireRealTime() = 0;
00087 virtual int AcquireRealTime(int priority) = 0;
00088 virtual int DropRealTime() = 0;
00089
00090 virtual void SetParams(UInt64 period, UInt64 computation, UInt64 constraint)
00091 {}
00092
00093 virtual pthread_t GetThreadID() = 0;
00094 };
00095
00096 }
00097
00098 #endif