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.cpp | 97 ---------------------- 1 file changed, 97 deletions(-) delete mode 100644 works/life/computer-network-experiment/ReadWriteLock.cpp (limited to 'works/life/computer-network-experiment/ReadWriteLock.cpp') diff --git a/works/life/computer-network-experiment/ReadWriteLock.cpp b/works/life/computer-network-experiment/ReadWriteLock.cpp deleted file mode 100644 index 46d2857..0000000 --- a/works/life/computer-network-experiment/ReadWriteLock.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "ReadWriteLock.h" - -#include -#include - -namespace cru { -ReadWriteLock::ReadWriteLock() { -#ifdef WIN32 - lock_ = std::make_unique(); - InitializeSRWLock(lock_.get()); -#else - lock_.reset(new pthread_rwlock_t(PTHREAD_RWLOCK_INITIALIZER)); - pthread_rwlock_init(lock_.get(), nullptr); -#endif -} - -ReadWriteLock::ReadWriteLock(ReadWriteLock &&other) - : lock_(std::move(other.lock_)) {} - -ReadWriteLock &ReadWriteLock::operator=(ReadWriteLock &&other) { - if (this != &other) { - Destroy(); - lock_ = std::move(other.lock_); - } - return *this; -} - -ReadWriteLock::~ReadWriteLock() { Destroy(); } - -void ReadWriteLock::ReadLock() { - assert(lock_); -#ifdef WIN32 - AcquireSRWLockShared(lock_.get()); -#else - pthread_rwlock_rdlock(lock_.get()); -#endif -} - -void ReadWriteLock::WriteLock() { - assert(lock_); -#ifdef WIN32 - AcquireSRWLockExclusive(lock_.get()); -#else - pthread_rwlock_wrlock(lock_.get()); -#endif -} - -bool ReadWriteLock::ReadTryLock() { - assert(lock_); -#ifdef WIN32 - return TryAcquireSRWLockShared(lock_.get()) != 0; -#else - return pthread_rwlock_tryrdlock(lock_.get()) == 0; -#endif -} - -bool ReadWriteLock::WriteTryLock() { - assert(lock_); -#ifdef WIN32 - return TryAcquireSRWLockExclusive(lock_.get()) != 0; -#else - return pthread_rwlock_trywrlock(lock_.get()) == 0; -#endif -} - -void ReadWriteLock::ReadUnlock() { - assert(lock_); -#ifdef WIN32 - ReleaseSRWLockShared(lock_.get()); -#else - pthread_rwlock_unlock(lock_.get()); -#endif -} - -void ReadWriteLock::WriteUnlock() { - assert(lock_); -#ifdef WIN32 - ReleaseSRWLockExclusive(lock_.get()); -#else - pthread_rwlock_unlock(lock_.get()); -#endif -} - -void ReadWriteLock::Destroy() { -#ifndef WIN32 - if (lock_ != nullptr) - pthread_rwlock_destroy(lock_.get()); -#endif -} - -void swap(ReadWriteLock &left, ReadWriteLock &right) { - auto temp = std::move(left.lock_); - left.lock_ = std::move(right.lock_); - right.lock_ = std::move(temp); -} - -} // namespace cru \ No newline at end of file -- cgit v1.2.3