Files
core_zero/tjp/core/threads/SharedLockGuard.hpp
Timothy Prepscius 996151a56a flatten 20260225
2026-02-25 12:43:06 -05:00

44 lines
685 B
C++
Executable File

// License: Modified MIT (NON-AI)
// See the LICENSE file in the root directory for license information.
// Copyright 2025 Timothy Prepscius
#pragma once
namespace tjp::core {
template<typename SharedMutex>
class SharedLockGuard
{
private:
SharedMutex& m;
bool locked = true;
public:
typedef SharedMutex mutex_type;
explicit SharedLockGuard(SharedMutex& m_):
m(m_)
{
m.lock_shared();
}
SharedLockGuard(SharedMutex& m_,std::adopt_lock_t):
m(m_)
{}
~SharedLockGuard()
{
unlock();
}
void unlock()
{
if (!locked)
return ;
locked = false;
m.unlock_shared();
}
};
} // namespace