core_timing: Make use of MicroSleep for x64 CPUs
For CPUs that support tpause, this should result in significant CPU power savings over thread yield in this spin wait.
This commit is contained in:
parent
27c33ab73f
commit
e1bce50d8b
|
@ -10,6 +10,10 @@
|
||||||
#include "common/windows/timer_resolution.h"
|
#include "common/windows/timer_resolution.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ARCHITECTURE_x86_64
|
||||||
|
#include "common/x64/cpu_wait.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "common/microprofile.h"
|
#include "common/microprofile.h"
|
||||||
#include "core/core_timing.h"
|
#include "core/core_timing.h"
|
||||||
#include "core/core_timing_util.h"
|
#include "core/core_timing_util.h"
|
||||||
|
@ -269,7 +273,11 @@ void CoreTiming::ThreadLoop() {
|
||||||
if (wait_time >= timer_resolution_ns) {
|
if (wait_time >= timer_resolution_ns) {
|
||||||
Common::Windows::SleepForOneTick();
|
Common::Windows::SleepForOneTick();
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef ARCHITECTURE_x86_64
|
||||||
|
Common::X64::MicroSleep();
|
||||||
|
#else
|
||||||
std::this_thread::yield();
|
std::this_thread::yield();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue