1 #pragma once 2 3 #define MT_CPUCORE_ANY (0xffffffff) 4 5 #include <Platform/Common/MTAtomic.h> 6 7 namespace MT 8 { 9 namespace ThreadPriority 10 { 11 enum Type 12 { 13 HIGH = 0, 14 DEFAULT = 1, 15 LOW = 2 16 }; 17 } 18 19 20 class ThreadBase 21 { 22 protected: 23 void * funcData; 24 TThreadEntryPoint func; 25 public: 26 27 MT_NOCOPYABLE(ThreadBase); 28 29 ThreadBase() 30 : funcData(nullptr) 31 , func(nullptr) 32 { 33 } 34 35 static void SpinSleepMicroSeconds(uint32 microseconds) 36 { 37 int64 desiredTime = GetTimeMicroSeconds() + microseconds; 38 for(;;) 39 { 40 int64 timeNow = GetTimeMicroSeconds(); 41 if (timeNow > desiredTime) 42 { 43 break; 44 } 45 YieldCpu(); 46 } 47 } 48 49 static void SpinSleepMilliSeconds(uint32 milliseconds) 50 { 51 int64 desiredTime = GetTimeMilliSeconds() + milliseconds; 52 while(GetTimeMilliSeconds() <= desiredTime) {} 53 } 54 55 }; 56 } 57 58 59