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