forked from Mirror/Ryujinx
48 lines
1.1 KiB
C#
48 lines
1.1 KiB
C#
|
using System;
|
||
|
using System.Threading;
|
||
|
|
||
|
namespace Ryujinx.Core.OsHle.Handles
|
||
|
{
|
||
|
class SchedulerThread : IDisposable
|
||
|
{
|
||
|
public KThread Thread { get; private set; }
|
||
|
|
||
|
public SchedulerThread Next { get; set; }
|
||
|
|
||
|
public bool IsActive { get; set; }
|
||
|
|
||
|
public AutoResetEvent WaitSync { get; private set; }
|
||
|
public ManualResetEvent WaitActivity { get; private set; }
|
||
|
public AutoResetEvent WaitSched { get; private set; }
|
||
|
|
||
|
public SchedulerThread(KThread Thread)
|
||
|
{
|
||
|
this.Thread = Thread;
|
||
|
|
||
|
IsActive = true;
|
||
|
|
||
|
WaitSync = new AutoResetEvent(false);
|
||
|
|
||
|
WaitActivity = new ManualResetEvent(true);
|
||
|
|
||
|
WaitSched = new AutoResetEvent(false);
|
||
|
}
|
||
|
|
||
|
public void Dispose()
|
||
|
{
|
||
|
Dispose(true);
|
||
|
}
|
||
|
|
||
|
protected virtual void Dispose(bool Disposing)
|
||
|
{
|
||
|
if (Disposing)
|
||
|
{
|
||
|
WaitSync.Dispose();
|
||
|
|
||
|
WaitActivity.Dispose();
|
||
|
|
||
|
WaitSched.Dispose();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|