aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/HleCoreManager.cs
blob: 0bfa2710cdd7471e9922104123be17467ce29fa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Collections.Concurrent;
using System.Threading;

namespace Ryujinx.HLE.HOS.Kernel
{
    class HleCoreManager
    {
        private ConcurrentDictionary<Thread, ManualResetEvent> Threads;

        public HleCoreManager()
        {
            Threads = new ConcurrentDictionary<Thread, ManualResetEvent>();
        }

        public ManualResetEvent GetThread(Thread Thread)
        {
            return Threads.GetOrAdd(Thread, (Key) => new ManualResetEvent(false));
        }

        public void RemoveThread(Thread Thread)
        {
            if (Threads.TryRemove(Thread, out ManualResetEvent Event))
            {
                Event.Set();
                Event.Dispose();
            }
        }
    }
}