From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- .../computer-network-experiment/ReadWriteLock.h | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 store/works/life/computer-network-experiment/ReadWriteLock.h (limited to 'store/works/life/computer-network-experiment/ReadWriteLock.h') diff --git a/store/works/life/computer-network-experiment/ReadWriteLock.h b/store/works/life/computer-network-experiment/ReadWriteLock.h new file mode 100644 index 0000000..ee40ac0 --- /dev/null +++ b/store/works/life/computer-network-experiment/ReadWriteLock.h @@ -0,0 +1,45 @@ +#pragma once +#include "Common.h" + +#include + +#ifdef WIN32 +#include +#else +#include +#endif + +namespace cru { +class ReadWriteLock { + friend void swap(ReadWriteLock &left, ReadWriteLock &right); +public: + ReadWriteLock(); + + ReadWriteLock(ReadWriteLock &&other); + ReadWriteLock &operator=(ReadWriteLock &&other); + + ~ReadWriteLock(); + +public: + void ReadLock(); + void WriteLock(); + + bool ReadTryLock(); + bool WriteTryLock(); + + void ReadUnlock(); + void WriteUnlock(); + +private: + void Destroy(); + +private: +#ifdef WIN32 + std::unique_ptr lock_; +#else + std::unique_ptr lock_; +#endif +}; + +void swap(ReadWriteLock &left, ReadWriteLock &right); +} // namespace cru -- cgit v1.2.3