|
Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
|
Thread-safe object pool for high-performance memory management. More...
#include <object_pool.h>

Classes | |
| struct | config |
| Configuration for object pool. More... | |
| struct | statistics |
| Get current pool statistics. More... | |
Public Member Functions | |
| object_pool (const config &cfg=config{}) | |
| Construct object pool with configuration. | |
| ~object_pool ()=default | |
| Destructor. | |
| std::unique_ptr< T > | acquire () |
| Get an object from the pool. | |
| void | release (std::unique_ptr< T > obj) |
| Return an object to the pool. | |
| statistics | get_statistics () const |
| Get pool statistics. | |
| void | clear () |
| Clear all objects from pool. | |
Private Member Functions | |
| void | initialize_pool () |
| Initialize pool with initial objects. | |
Private Attributes | |
| config | config_ |
| Pool configuration. | |
| std::mutex | mutex_ |
| Thread safety mutex. | |
| std::queue< std::unique_ptr< T > > | available_objects_ |
| Available objects. | |
| std::atomic< size_t > | pool_size_ |
| Current pool size. | |
Thread-safe object pool for high-performance memory management.
| T | The type of objects to pool |
Definition at line 29 of file object_pool.h.
|
inlineexplicit |
Construct object pool with configuration.
| cfg | Pool configuration |
Definition at line 46 of file object_pool.h.
|
default |
Destructor.
|
inline |
Get an object from the pool.
Definition at line 60 of file object_pool.h.
References kcenon::logger::memory::object_pool< T >::config::allow_growth, kcenon::logger::memory::object_pool< T >::available_objects_, kcenon::logger::memory::object_pool< T >::config_, kcenon::logger::memory::object_pool< T >::config::max_size, kcenon::logger::memory::object_pool< T >::mutex_, and kcenon::logger::memory::object_pool< T >::pool_size_.
|
inline |
Clear all objects from pool.
Definition at line 122 of file object_pool.h.
References kcenon::logger::memory::object_pool< T >::available_objects_, kcenon::logger::memory::object_pool< T >::mutex_, and kcenon::logger::memory::object_pool< T >::pool_size_.
|
inline |
Get pool statistics.
Definition at line 110 of file object_pool.h.
References kcenon::logger::memory::object_pool< T >::statistics::available_count, kcenon::logger::memory::object_pool< T >::available_objects_, kcenon::logger::memory::object_pool< T >::statistics::in_use_count, kcenon::logger::memory::object_pool< T >::mutex_, kcenon::logger::memory::object_pool< T >::pool_size_, and kcenon::logger::memory::object_pool< T >::statistics::total_size.
|
inlineprivate |
Initialize pool with initial objects.
Definition at line 134 of file object_pool.h.
References kcenon::logger::memory::object_pool< T >::available_objects_, kcenon::logger::memory::object_pool< T >::config_, kcenon::logger::memory::object_pool< T >::config::initial_size, kcenon::logger::memory::object_pool< T >::mutex_, and kcenon::logger::memory::object_pool< T >::pool_size_.
|
inline |
Return an object to the pool.
| obj | Object to return |
Definition at line 83 of file object_pool.h.
References kcenon::logger::memory::object_pool< T >::available_objects_, kcenon::logger::memory::object_pool< T >::config_, kcenon::logger::memory::object_pool< T >::config::max_size, and kcenon::logger::memory::object_pool< T >::mutex_.
|
private |
Available objects.
Definition at line 146 of file object_pool.h.
Referenced by kcenon::logger::memory::object_pool< T >::acquire(), kcenon::logger::memory::object_pool< T >::clear(), kcenon::logger::memory::object_pool< T >::get_statistics(), kcenon::logger::memory::object_pool< T >::initialize_pool(), and kcenon::logger::memory::object_pool< T >::release().
|
private |
Pool configuration.
Definition at line 144 of file object_pool.h.
Referenced by kcenon::logger::memory::object_pool< T >::acquire(), kcenon::logger::memory::object_pool< T >::initialize_pool(), and kcenon::logger::memory::object_pool< T >::release().
|
mutableprivate |
Thread safety mutex.
Definition at line 145 of file object_pool.h.
Referenced by kcenon::logger::memory::object_pool< T >::acquire(), kcenon::logger::memory::object_pool< T >::clear(), kcenon::logger::memory::object_pool< T >::get_statistics(), kcenon::logger::memory::object_pool< T >::initialize_pool(), and kcenon::logger::memory::object_pool< T >::release().
|
private |
Current pool size.
Definition at line 147 of file object_pool.h.
Referenced by kcenon::logger::memory::object_pool< T >::acquire(), kcenon::logger::memory::object_pool< T >::clear(), kcenon::logger::memory::object_pool< T >::get_statistics(), and kcenon::logger::memory::object_pool< T >::initialize_pool().