Rewrite scheduler context switch code (#1786)
* Rewrite scheduler context switch code * Fix race in UnmapIpcRestorePermission * Fix thread exit issue that could leave the scheduler in a invalid state * Change context switch method to not wait on guest thread, remove spin wait, use SignalAndWait to pass control * Remove multi-core setting (it is always on now) * Re-enable assert * Remove multicore from default config and schema * Fix race in KTimeManager
This commit is contained in:
19
Ryujinx.HLE/HOS/Kernel/Threading/KThreadContext.cs
Normal file
19
Ryujinx.HLE/HOS/Kernel/Threading/KThreadContext.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Kernel.Threading
|
||||
{
|
||||
class KThreadContext
|
||||
{
|
||||
private int _locked;
|
||||
|
||||
public bool Lock()
|
||||
{
|
||||
return Interlocked.Exchange(ref _locked, 1) == 0;
|
||||
}
|
||||
|
||||
public void Unlock()
|
||||
{
|
||||
Interlocked.Exchange(ref _locked, 0);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user