1 | #include "thread/seadMutex.h" |
---|---|
2 | |
3 | namespace sead |
4 | { |
5 | Mutex::Mutex() : IDisposer() |
6 | { |
7 | nn::os::InitializeMutex(&mMutexInner, true, 0); |
8 | } |
9 | |
10 | Mutex::Mutex(Heap* disposer_heap) : Mutex(disposer_heap, HeapNullOption::UseSpecifiedOrContainHeap) |
11 | { |
12 | } |
13 | |
14 | Mutex::Mutex(Heap* disposer_heap, HeapNullOption heap_null_option) |
15 | : IDisposer(disposer_heap, heap_null_option) |
16 | { |
17 | nn::os::InitializeMutex(&mMutexInner, true, 0); |
18 | } |
19 | |
20 | Mutex::~Mutex() |
21 | { |
22 | nn::os::FinalizeMutex(&mMutexInner); |
23 | } |
24 | |
25 | void Mutex::lock() |
26 | { |
27 | nn::os::LockMutex(&mMutexInner); |
28 | } |
29 | |
30 | bool Mutex::tryLock() |
31 | { |
32 | return nn::os::TryLockMutex(&mMutexInner); |
33 | } |
34 | |
35 | void Mutex::unlock() |
36 | { |
37 | nn::os::UnlockMutex(&mMutexInner); |
38 | } |
39 | } // namespace sead |
40 |