HleCoreManager.cs 727 B

1234567891011121314151617181920212223242526272829
  1. using System.Collections.Concurrent;
  2. using System.Threading;
  3. namespace Ryujinx.HLE.HOS.Kernel
  4. {
  5. class HleCoreManager
  6. {
  7. private ConcurrentDictionary<Thread, ManualResetEvent> Threads;
  8. public HleCoreManager()
  9. {
  10. Threads = new ConcurrentDictionary<Thread, ManualResetEvent>();
  11. }
  12. public ManualResetEvent GetThread(Thread Thread)
  13. {
  14. return Threads.GetOrAdd(Thread, (Key) => new ManualResetEvent(false));
  15. }
  16. public void RemoveThread(Thread Thread)
  17. {
  18. if (Threads.TryRemove(Thread, out ManualResetEvent Event))
  19. {
  20. Event.Set();
  21. Event.Dispose();
  22. }
  23. }
  24. }
  25. }