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 #ifndef _threadwrap_
00026 #define _threadwrap_
00027
00028 #include "H3DNetworkingUtils/Config.h"
00029
00030
00031
00032 typedef void (* ThreadFunction)(void * arg);
00033
00034 class H3D_NETWORKING_UTILS_DLL_SPEC Thread {
00035 protected:
00036 void * tid;
00037
00038 static int * priorityMap;
00039
00040 virtual void buildPriorityMap ();
00041
00042 public:
00043 enum {
00044 PRI_LOWEST = 0,
00045 PRI_0 = 0,
00046 PRI_LOW = 1,
00047 PRI_1 = 1,
00048 PRI_NORMAL = 2,
00049 PRI_2 = 2,
00050 PRI_HIGH = 3,
00051 PRI_3 = 3,
00052 PRI_HIGHEST = 4,
00053 PRI_4 = 4
00054 };
00055
00056
00057 Thread (ThreadFunction func, void * arg);
00058
00059
00060 Thread (ThreadFunction func, void * arg, int priority, int autoTerminate);
00061
00062 virtual ~Thread ();
00063
00064 void * sysRef () { return tid; }
00065
00066 virtual void wait ();
00067 virtual void cancel ();
00068
00069 virtual int getPriority ();
00070 virtual void setPriority (int newPriority);
00071
00072
00073
00074
00075 static void exit ();
00076 static void sleep (int seconds);
00077 static void millisleep (int millisecs);
00078 };
00079
00080 #endif