flatten 20260225
This commit is contained in:
43
tjp/core/threads/SharedLockGuard.hpp
Executable file
43
tjp/core/threads/SharedLockGuard.hpp
Executable file
@@ -0,0 +1,43 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user