35 lines
451 B
C++
Executable File
35 lines
451 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 T>
|
|
class TryLockGuard
|
|
{
|
|
public:
|
|
T &m;
|
|
bool locked = false;
|
|
|
|
explicit TryLockGuard(T &m_) :
|
|
m(m_)
|
|
{
|
|
locked = m.try_lock();
|
|
}
|
|
|
|
~TryLockGuard()
|
|
{
|
|
if (locked)
|
|
m.unlock();
|
|
}
|
|
|
|
operator bool() const
|
|
{
|
|
return locked;
|
|
}
|
|
};
|
|
|
|
} // namespace
|