diff options
author | crupest <crupest@outlook.com> | 2021-06-10 11:12:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-06-10 11:12:25 +0800 |
commit | ef593ba2d445af515214d63bfd3942be9d673467 (patch) | |
tree | 6f286d3c30af2a6c74a1a60047fa25bae09fd9db /works/life/operating-system-experiment/Mutex.h | |
parent | 93d8feccd79b35fc890fc8629d6da2c2baa57762 (diff) | |
download | crupest-ef593ba2d445af515214d63bfd3942be9d673467.tar.gz crupest-ef593ba2d445af515214d63bfd3942be9d673467.tar.bz2 crupest-ef593ba2d445af515214d63bfd3942be9d673467.zip |
import(life): ...
Diffstat (limited to 'works/life/operating-system-experiment/Mutex.h')
-rw-r--r-- | works/life/operating-system-experiment/Mutex.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/works/life/operating-system-experiment/Mutex.h b/works/life/operating-system-experiment/Mutex.h new file mode 100644 index 0000000..163d9ca --- /dev/null +++ b/works/life/operating-system-experiment/Mutex.h @@ -0,0 +1,44 @@ +#ifndef HEADER_MUTEX_H +#define HEADER_MUTEX_H + +#include "Base.h" + +#include <memory> + +#ifdef CRU_WINDOWS +#include <Windows.h> +#else +#include <pthread.h> +#endif + +namespace cru { +class CRU_API Mutex { +public: + Mutex(); + + Mutex(const Mutex &other) = delete; + Mutex &operator=(const Mutex &other) = delete; + + Mutex(Mutex &&other); + Mutex &operator=(Mutex &&other); + + ~Mutex(); + +public: + void Lock(); + bool TryLock(); + + void Unlock(); + +private: + void Destroy(); + +private: +#ifdef CRU_WINDOWS +#else + std::unique_ptr<pthread_mutex_t> mutex_; +#endif +}; +} // namespace cru + +#endif
\ No newline at end of file |