Use spinwait so we don't completely blast the CPU with cmpxchg

This commit is contained in:
riperiperi 2024-05-20 19:43:38 +01:00
commit 90a21959e7

View file

@ -236,7 +236,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
private void ActivateIdleThread() private void ActivateIdleThread()
{ {
while (Interlocked.CompareExchange(ref _coreIdleLock, 1, 0) != 0) while (Interlocked.CompareExchange(ref _coreIdleLock, 1, 0) != 0)
{ } {
Thread.SpinWait(1);
}
Thread.MemoryBarrier(); Thread.MemoryBarrier();
@ -251,7 +253,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
private void NotifyIdleThread() private void NotifyIdleThread()
{ {
while (Interlocked.CompareExchange(ref _coreIdleLock, 1, 0) != 0) while (Interlocked.CompareExchange(ref _coreIdleLock, 1, 0) != 0)
{ } {
Thread.SpinWait(1);
}
Thread.MemoryBarrier(); Thread.MemoryBarrier();