00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_THREAD_H
00027 #define NL_THREAD_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/misc/common.h"
00031
00032
00033 namespace NLMISC {
00034
00035
00065 class IRunnable
00066 {
00067 public:
00068
00069 virtual void run()=0;
00070 virtual ~IRunnable()
00071 {
00072 }
00073 };
00074
00081 class IThread
00082 {
00083 public:
00084
00089 static IThread *create(IRunnable *runnable);
00090
00096 static IThread *getCurrentThread ();
00097
00098 virtual ~IThread () { }
00099
00100
00101 virtual void start()=0;
00102
00103
00104 virtual void terminate()=0;
00105
00106
00107 virtual void wait()=0;
00108
00110 virtual IRunnable *getRunnable()=0;
00111
00117 virtual bool setCPUMask(uint64 cpuMask)=0;
00118
00124 virtual uint64 getCPUMask()=0;
00125
00130 virtual std::string getUserName()=0;
00131 };
00132
00133
00134
00135
00136
00137 struct EThread : public Exception
00138 {
00139 EThread (const char* message) : Exception (message) {};
00140 };
00141
00142
00149 class IProcess
00150 {
00151 public:
00152
00157 static IProcess *getCurrentProcess ();
00158
00163 virtual uint64 getCPUMask()=0;
00164 };
00165
00166
00167 }
00168
00169
00170 #endif // NL_THREAD_H
00171
00172