|
constexpr | RealtimeThreadSafeBox (const T &init=T{}) |
|
constexpr | RealtimeThreadSafeBox (const T &&init) |
|
constexpr | RealtimeThreadSafeBox (const RealtimeThreadSafeBox &o) |
|
constexpr RealtimeThreadSafeBox & | operator= (const RealtimeThreadSafeBox &o) |
|
constexpr | RealtimeThreadSafeBox (RealtimeThreadSafeBox &&o) |
|
template<typename U = T> |
constexpr | RealtimeThreadSafeBox (const std::initializer_list< U > &init, std::enable_if_t< std::is_constructible_v< U, std::initializer_list< U > > >) |
|
constexpr RealtimeThreadSafeBox & | operator= (RealtimeThreadSafeBox &&o) |
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, bool > | try_set (const T &value) |
| set a new content with best effort
|
|
bool | try_set (const std::function< void(T &)> &func) |
| access the content readable with best effort
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, bool > | trySet (const T &value) |
| set a new content with best effort
|
|
template<typename U = T> |
bool | trySet (const std::function< void(T &)> &func) |
| access the content readable with best effort
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, std::optional< U > > | try_get () const |
| get the content with best effort
|
|
bool | try_get (const std::function< void(const T &)> &func) |
| access the content (r) with best effort
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, std::optional< U > > | tryGet () const |
| get the content with best effort
|
|
template<typename U = T> |
bool | tryGet (const std::function< void(const T &)> &func) |
| access the content (r) with best effort
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, void > | set (const T &value) |
| Wait until the mutex can be locked and set the content (RealtimeThreadSafeBox behavior)
|
|
template<typename U = T> |
std::enable_if_t< is_ptr_or_smart_ptr< U >, void > | set (const T &value) |
| Wait until the mutex can be locked and set the content (RealtimeThreadSafeBox behavior)
|
|
template<typename F , typename = std::enable_if_t<std::is_invocable_v<F, T &> && !std::is_invocable_v<F, T>>> |
void | set (F &&func) |
| wait until the mutex could be locked and access the content (rw)
|
|
template<typename U = T, typename = std::enable_if_t<is_ptr_or_smart_ptr<U>>> |
void | set (std::nullptr_t) |
| wait until the mutex could be locked and access the content (rw)
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, U > | get () const |
| Wait until the mutex could be locked and get the content (RealtimeThreadSafeBox behaviour)
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, void > | get (T &in) const |
| Wait until the mutex could be locked and get the content (r)
|
|
template<typename U = T> |
std::enable_if_t< is_ptr_or_smart_ptr< U >, void > | get (T &in) const |
| Wait until the mutex could be locked and get the content (r)
|
|
void | get (const std::function< void(const T &)> &func) |
| Wait until the mutex could be locked and access the content (r)
|
|
template<typename U = T> |
std::enable_if_t<!is_ptr_or_smart_ptr< U >, void > | operator= (const T &value) |
| provide a custom assignment operator for easier usage
|
|
template<typename U = T, typename = typename std::enable_if_t<!is_ptr_or_smart_ptr<U>>> |
| operator T () const |
| provide a custom conversion operator
|
|
template<typename U = T, typename = typename std::enable_if_t<!is_ptr_or_smart_ptr<U>>> |
| operator std::optional< T > () const |
| provide a custom conversion operator
|
|
const mutex_t & | get_mutex () const |
|
mutex_t & | get_mutex () |
|
mutex_t & | getMutex () |
|
const mutex_t & | getMutex () const |
|
template<class T, typename mutex_type = DEFAULT_MUTEX>
class realtime_tools::RealtimeThreadSafeBox< T, mutex_type >
A Box that ensures thread safe access to the boxed contents. Access is best effort. If it can not lock it will return.
NOTE about pointers: You can use pointers with this box but the access will be different. Only use the get/set methods that take function pointer for accessing the internal value.