1#pragma once
2
3#include <nn/nn_BitTypes.h>
4
5namespace nn::os::detail {
6
7class InternalCriticalSectionImplByHorizon {
8public:
9 InternalCriticalSectionImplByHorizon();
10 void Initialize();
11 void Finalize();
12 void Enter();
13 bool TryEnter();
14 void Leave();
15 bool IsLockedByCurrentThread() const;
16 void lock();
17 void unlock();
18
19private:
20 Bit32 m_ThreadHandle;
21};
22
23typedef InternalCriticalSectionImplByHorizon InternalCriticalSectionImpl;
24
25} // namespace nn::os::detail