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:
22
src/dobj/private/LockableDObject.cpp
Normal file
22
src/dobj/private/LockableDObject.cpp
Normal 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();
|
||||
}
|
||||
47
src/dobj/public/LockableDObject.h
Normal file
47
src/dobj/public/LockableDObject.h
Normal 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
|
||||
Reference in New Issue
Block a user