00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __JackWinThread__
00023 #define __JackWinThread__
00024
00025 #include "JackThread.h"
00026 #include <windows.h>
00027
00028 namespace Jack
00029 {
00030
00031 typedef DWORD (WINAPI *ThreadCallback)(void *arg);
00032
00037 class JackWinThread : public JackThread
00038 {
00039
00040 private:
00041
00042 HANDLE fThread;
00043 HANDLE fEvent;
00044
00045 static DWORD WINAPI ThreadHandler(void* arg);
00046
00047 public:
00048
00049 JackWinThread(JackRunnableInterface* runnable);
00050 virtual ~JackWinThread();
00051
00052 int Start();
00053 int StartSync();
00054 int Kill();
00055 int Stop();
00056 void Terminate();
00057
00058 int AcquireRealTime();
00059 int AcquireRealTime(int priority) ;
00060 int DropRealTime();
00061
00062 pthread_t GetThreadID();
00063
00064 static int AcquireRealTimeImp(pthread_t thread, int priority);
00065 static int DropRealTimeImp(pthread_t thread);
00066 static int StartImp(pthread_t* thread, int priority, int realtime, ThreadCallback start_routine, void* arg);
00067
00068 };
00069
00070 }
00071
00072 #endif