pid
Classes | Namespaces | Typedefs | Functions

header for classes managing the loops synchronization variables More...

#include <pid/loops/loop_synchronization.h>
#include <pid/rw_barrier.h>
#include <pid/containers.h>
#include <pid/hashed_string.h>
#include <atomic>
#include <initializer_list>
#include <tuple>
#include <type_traits>
#include <utility>
Include dependency graph for loop_variables.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  pid::loops::AbstractLoopVariable
 
struct  pid::loops::is_atomizable< T, Enable >
 
struct  pid::loops::is_atomizable< T, typename std::enable_if_t< std::is_trivially_copyable_v< T > and std::is_copy_constructible_v< T > and std::is_move_constructible_v< T > and std::is_copy_assignable_v< T > and std::is_move_assignable_v< T > > >
 
class  pid::loops::ReadableLoopTriggeringVariable< T, Enable >
 Represent a variable with RW access protection. More...
 
class  pid::loops::LoopTriggeringVariable< T, Enable >
 Represent a variable with RW access protection. More...
 
class  pid::loops::ReadableLoopTriggeringVariable< T, typename std::enable_if< not std::is_void_v< T > and not std::is_lvalue_reference_v< T > and not is_atomizable< T >::value >::type >
 Represent a read only variable, that can be accessed by multiple threads. More...
 
class  pid::loops::ReadableLoopTriggeringVariable< T, typename std::enable_if< not std::is_void_v< T > and not std::is_lvalue_reference_v< T > and is_atomizable< T >::value >::type >
 Represent a read only variable, that can be accessed by multiple threads. More...
 
class  pid::loops::LoopTriggeringVariable< T, typename std::enable_if< not std::is_void_v< T > and not std::is_lvalue_reference_v< T > and not is_atomizable< T >::value >::type >
 Represent a variable with RW access, that can be shared by mutliple threads. More...
 
class  pid::loops::LoopTriggeringVariable< T, typename std::enable_if< not std::is_void_v< T > and not std::is_lvalue_reference_v< T > and is_atomizable< T >::value >::type >
 Represent a variable with RW access, that can be shared by mutliple threads. More...
 
class  pid::loops::ReadableLoopTriggeringVariable< T, typename std::enable_if< not std::is_void_v< T > and std::is_lvalue_reference_v< T > and not is_atomizable< T >::value >::type >
 Represent a read-only variable that can be accesses by mutliple threads. More...
 
class  pid::loops::LoopTriggeringVariable< T, typename std::enable_if< not std::is_void_v< T > and std::is_lvalue_reference_v< T > and not is_atomizable< T >::value >::type >
 Represent a variable with RW access protection that can be accesses by mutliple threads. More...
 
class  pid::loops::LoopTriggeringVariable< void, void >
 Represent a simple signal used to trigger synchroniations explicitly from within a loop. More...
 
class  pid::loops::ReadableLoopQueueTriggeringVariable< T, Limit >
 Represent a queue with protected Read access only that can be accesses by mutliple threads. More...
 
class  pid::loops::LoopQueueTriggeringVariable< T, Limit >
 Represent a queue with Read/Write access that can be accesses by mutliple threads. More...
 
class  pid::loops::UnprotectedReadableLoopQueueTriggeringVariable< T, Limit >
 Represent a Read access only queue without protection (not thread safe). More...
 
class  pid::loops::UnprotectedLoopQueueTriggeringVariable< T, Limit >
 Represent a Read/Write access queue without protection (not thread safe). More...
 
struct  pid::loops::SetElement< ID, U >
 
class  pid::loops::ReadableLoopTriggeringVariableSet< T1, T2, T >
 Represent a Read access only set of atomic variables. More...
 
class  pid::loops::LoopTriggeringVariableSet< T1, T2, T >
 

Namespaces

 pid
 root namespace for pid packages.
 
 pid::loops
 

Typedefs

template<typename T , typename Enable = typename std::enable_if<not std::is_void<T>::value>::type>
using pid::loop_var = loops::LoopTriggeringVariable< T >
 
using pid::loop_signal = loops::LoopTriggeringVariable< void >
 
template<typename T , uint32_t Limit>
using pid::loop_up_queue = loops::UnprotectedLoopQueueTriggeringVariable< T, Limit >
 
template<typename T , uint32_t Limit>
using pid::loop_queue = loops::LoopQueueTriggeringVariable< T, Limit >
 
template<typename... T>
using pid::loop_varset = loops::LoopTriggeringVariableSet< T... >
 
template<uint64_t ID, typename T >
using pid::loop_v = loops::SetElement< ID, T >
 

Functions

template<uint64_t ID, typename TupleType , size_t I = 0>
static constexpr int pid::loops::find_map_element ()
 

Detailed Description

header for classes managing the loops synchronization variables

Author
Robin Passama
Date
2022-06-10