scheduler: Only work steal higher priority threads from other cores

This commit is contained in:
Zach Hilman
2018-12-03 17:29:21 -05:00
parent be6c26bb23
commit 8908fa3bb7
3 changed files with 24 additions and 35 deletions

View File

@@ -984,20 +984,16 @@ static void SleepThread(s64 nanoseconds) {
scheduler.YieldAndWaitForLoadBalancing(GetCurrentThread());
break;
default:
UNREACHABLE_MSG(
"Unimplemented sleep yield type '{:016X}'! Falling back to forced reschedule...",
nanoseconds);
UNREACHABLE_MSG("Unimplemented sleep yield type '{:016X}'!", nanoseconds);
}
} else {
// Sleep current thread and check for next thread to schedule
WaitCurrentThread_Sleep();
nanoseconds = 0;
// Create an event to wake the thread up after the specified nanosecond delay has passed
GetCurrentThread()->WakeAfterDelay(nanoseconds);
}
// Sleep current thread and check for next thread to schedule
WaitCurrentThread_Sleep();
// Create an event to wake the thread up after the specified nanosecond delay has passed
GetCurrentThread()->WakeAfterDelay(nanoseconds);
Core::System::GetInstance().PrepareReschedule();
}