2018-05-12 20:22:42 -07:00
|
|
|
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; }
|
|
|
|
|
2018-05-15 18:36:08 -07:00
|
|
|
public bool NeedsReschedule { get; set; }
|
|
|
|
|
2018-05-12 20:22:42 -07:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|