RAII-style mutex

This commit is contained in:
dario 2024-05-24 16:27:53 +02:00
parent e186eb757c
commit e5c4b9a6cc
2 changed files with 27 additions and 0 deletions

View File

@ -5,9 +5,16 @@
#ifndef STA_CORE_MUTEX_HPP #ifndef STA_CORE_MUTEX_HPP
#define STA_CORE_MUTEX_HPP #define STA_CORE_MUTEX_HPP
#include <mutex>
namespace sta namespace sta
{ {
/**
* @brief Hippity hoppity, this is now namespace sta's property.
*/
using std::lock_guard;
/** /**
* @brief Interface for mutex objects. * @brief Interface for mutex objects.
* *
@ -25,6 +32,16 @@ namespace sta
*/ */
virtual void release() = 0; virtual void release() = 0;
/**
* @brief Identical to acquire(). Added for compatibility with std::lock_guard.
*/
void lock();
/**
* @brief Identical to release(). Added for compatibility with std::lock_guard.
*/
void unlock();
static Mutex * ALWAYS_FREE; /**< Fake mutex that can always be acquired */ static Mutex * ALWAYS_FREE; /**< Fake mutex that can always be acquired */
}; };
} // namespace sta } // namespace sta

View File

@ -3,6 +3,16 @@
namespace sta namespace sta
{ {
void Mutex::lock()
{
acquire();
}
void Mutex::unlock()
{
release();
}
/** /**
* @brief Dummy mutex implementation with no access control. * @brief Dummy mutex implementation with no access control.
*/ */