00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef VDKTHREAD_H
00028 #define VDKTHREAD_H
00029
00030 #include <pthread.h>
00031
00032 enum VDKMutexEnum {
00033 VDKMUTEX_OK = 0,
00034 VDKMUTEX_ERROR
00035 };
00039 enum VDKThreadEnum {
00040 VDKTHREAD_IDLE = 1,
00041 VDKTHREAD_RUNNING,
00042 VDKTHREAD_STOPPED,
00043 VDKTHREAD_EXITED,
00044 VDKTHREAD_CANNOT_CREATE,
00045 VDKTHREAD_IS_YET_RUNNING
00046 };
00047
00048 class VDKMutex {
00049 private:
00050 pthread_mutex_t mutex;
00051 public:
00052 VDKMutex ();
00053 ~VDKMutex ();
00054 VDKMutexEnum Wait (long time = 0);
00055 VDKMutexEnum Release ();
00056 VDKMutexEnum Lock ();
00057 };
00058
00092 class VDKThread {
00093 protected:
00094 pthread_t id;
00098 void Exit (void * status = 0);
00099 static void * EntryPoint (void * arg);
00100 virtual void Execute ();
00101 public:
00102 VDKThread ();
00103 virtual ~VDKThread ();
00107 VDKThreadEnum Start (void * = NULL);
00111 VDKThreadEnum Stop ();
00115 void * Wait ();
00119 VDKThreadEnum state;
00123 unsigned int GetID () {return (unsigned long) id;};
00124 };
00125
00126 #endif