feat(dobj/LockableDObject): added thread safe implimentation of DObject

In order to build a preformant code code base we may want to make parallized code in which case having a lockable DObject is a useful construct
This commit is contained in:
2025-01-19 11:53:45 -05:00
parent 5c035f3ba9
commit d090ddaabe
4 changed files with 164 additions and 2 deletions

View File

@@ -0,0 +1,22 @@
#include "LockableDObject.h"
/**
* @brief Access the underlying DObject.
*/
DObject& LockableDObject::get() {
return object_;
}
/**
* @brief Locks the mutex to ensure thread-safe access.
*/
void LockableDObject::lock() {
mutex_.lock();
}
/**
* @brief Unlocks the mutex after thread-safe access.
*/
void LockableDObject::unlock() {
mutex_.unlock();
}

View File

@@ -0,0 +1,47 @@
#ifndef LOCKABLE_DOBJECT_H
#define LOCKABLE_DOBJECT_H
#include "DObject.h"
#include <mutex>
/**
* @file LockableDObject.h
* @brief A lightweight wrapper for DObject that adds locking capabilities.
*
* This class allows safe concurrent access to a DObject by providing
* locking and unlocking methods.
*/
/**
* @class LockableDObject
* @brief Wrapper for DObject with thread-safe access.
*/
class LockableDObject {
public:
/**
* @brief Default constructor.
*/
LockableDObject() = default;
/**
* @brief Access the underlying DObject.
* @return A reference to the wrapped DObject.
*/
DObject& get();
/**
* @brief Locks the mutex to ensure thread-safe access.
*/
void lock();
/**
* @brief Unlocks the mutex after thread-safe access.
*/
void unlock();
private:
DObject object_; ///< The underlying DObject instance.
std::mutex mutex_; ///< Mutex for thread-safe access.
};
#endif // LOCKABLE_DOBJECT_H