00001
00002
00003
00004
00005
00006
00007 #ifndef _VUTHREAD_H_
00008 #define _VUTHREAD_H_
00009
00010 #include "vuSimpleTypes.h"
00011 #include <stddef.h>
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class vuLock;
00041
00048 class vuMutex
00049 {
00050 friend class vuLock;
00051 public:
00054 vuMutex();
00057 ~vuMutex();
00058
00063 void lock();
00067 bool trylock();
00071 void unlock();
00072
00073 private:
00074 void * mutex;
00075 };
00076
00080 class vuLock {
00081 public:
00083 vuLock(vuMutex &m) : lmutex(&m) {
00084 lmutex->lock();
00085 }
00087 ~vuLock() {
00088 lmutex->unlock();
00089 }
00090 private:
00091 vuMutex *lmutex;
00092 };
00093
00099 class vuThread
00100 {
00101 public:
00103 virtual ~vuThread() {};
00104
00108 bool startThread(int whatsup, void* data=NULL);
00109
00110
00111
00115 virtual void run(int whatsup, void* data) = 0;
00116
00117
00118
00119 void stopThread();
00120
00121 protected:
00122
00123 private:
00124
00125 #ifdef WIN32
00126 friend void _kickoff(void *ptr);
00127 #else
00128 friend void* _kickoff(void *ptr);
00129 #endif
00130
00131
00135 vuMutex m_WhatsupMutex;
00136
00138 int m_Whatsup;
00140 void* m_AdditionalData;
00141
00142 };
00143
00144
00145 vuMutex& getLogMut();
00146
00147 #define MFDEBUGMSG(msg) do{ \
00148 }while(0);
00149
00150
00151
00152
00153 #endif