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 | 3128281e50d30d12a053bc06018df4efcc8e988e (patch) | |
tree | e6b4cadff0d9b7d7fd055225e78a7013b100e38c /operating-system-experiment/Mutex.h | |
parent | a440d1c5648492b24d1a56ec2e841f2309aad3fd (diff) | |
download | life-3128281e50d30d12a053bc06018df4efcc8e988e.tar.gz life-3128281e50d30d12a053bc06018df4efcc8e988e.tar.bz2 life-3128281e50d30d12a053bc06018df4efcc8e988e.zip |
...
Diffstat (limited to 'operating-system-experiment/Mutex.h')
-rw-r--r-- | operating-system-experiment/Mutex.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/operating-system-experiment/Mutex.h b/operating-system-experiment/Mutex.h new file mode 100644 index 0000000..163d9ca --- /dev/null +++ b/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 |