STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
Classes | Macros | Functions | Variables

Support functions and classes for threads and mixed-mode for the Runtime System. More...

+ Collaboration diagram for Threading Support:

Classes

class  stapl::runtime::boost_impl::thread_local_storage< T >
 Implements thread-local storage using boost::thread_specific_ptr. More...
 
class  stapl::runtime::concurrency
 Initializes and controls threads for shared-memory concurrency. More...
 
struct  stapl::runtime::data_race_helper
 Helper class for detecting possible data races in a class static or stand-alone function. More...
 
class  stapl::runtime::centralized_fuzzy_barrier
 Centralized fuzzy barrier. More...
 
class  stapl::runtime::generic_impl::fuzzy_barrier
 Binary-tree based fuzzy barrier. More...
 
class  stapl::runtime::generic_impl::queue< T >
 A thread-safe queue. More...
 
class  stapl::runtime::generic_impl::read_write_mutex
 A generic, non-optimized implementation of a read-write mutex. More...
 
class  stapl::runtime::generic_impl::thread_local_storage< T >
 Helper class for thread-local storage through C++11 thread_local. More...
 
class  stapl::runtime::intrusive_mpsc_queue_hook
 Hook for intrusive_mpsc_queue. More...
 
class  stapl::runtime::intrusive_mpsc_queue< T >
 An intrusive lock-free MPSC (multiple producer, single consumer) queue. More...
 
class  stapl::runtime::thin_spin_mutex
 Spin-based synchronization primitive that does not emit memory fences. More...
 
class  stapl::runtime::hierarchical_mutex
 Hierarchical synchronization primitive that does not emit memory fences. More...
 
struct  stapl::runtime::read_lock_t
 Tag type for read lock ownership. More...
 
struct  stapl::runtime::write_lock_t
 Tag type for write lock ownership. More...
 
struct  stapl::runtime::read_lock_guard< Mutex >
 Lock guard for read lock ownership. More...
 
class  stapl::runtime::phtread_impl::read_write_mutex
 A read-write mutex based on pthread_rwlock_t. More...
 
class  stapl::runtime::shared_object_factory< Key, Hash, KeyEqual >
 Factory for creating object shared between threads. More...
 
class  stapl::runtime::task_queue< R(Args...)>
 A lock-free MPSC (multiple producer, single consumer) queue of tasks to be executed. More...
 
class  stapl::runtime::tbb_impl::queue< T >
 A thread-safe queue using tbb::concurrent_queue. More...
 
class  stapl::runtime::tbb_impl::read_write_mutex
 An implementation of a read-write mutex based on tbb::queueing_rw_mutex. More...
 
class  stapl::runtime::tbb_impl::thread_local_storage< T >
 Implements thread-local storage using tbb::enumerable_thread_specific. More...
 
struct  stapl::runtime::thread_info_t
 Thread information. More...
 

Macros

#define STAPL_RUNTIME_THREAD_LOCAL(t, x)   stapl::runtime::boost_impl::thread_local_storage<t> x;
 Thread-local storage variable definition helper macro for stapl::runtime::boost_impl::thread_local_storage.
 
#define STAPL_RUNTIME_DETECT_DATA_RACE()
 Detects data races in a class static or stand-alone function. More...
 
#define STAPL_RUNTIME_THREAD_LOCAL(T, n)   thread_local stapl::runtime::generic_impl::thread_local_storage<T> n;
 Thread-local storage variable definition helper macro for stapl::runtime::generic_impl::thread_local_storage.
 
#define STAPL_RUNTIME_THREAD_LOCAL(T, n)   stapl::runtime::tbb_impl::thread_local_storage<T> n;
 Thread-local storage variable definition helper macro for stapl::runtime::tbb_impl::thread_local_storage.
 

Functions

static void stapl::runtime::fork_impl (const unsigned int parent_tid, thread_info_t const &parent_info, const unsigned int end_level, const unsigned int af_offset, std::function< void(unsigned int)> f)
 Recursive forking for implementing concurrency::fork(). More...
 

Variables

constexpr read_lock_t stapl::runtime::read_lock = { }
 Tag for read lock ownership.
 
constexpr write_lock_t stapl::runtime::write_lock = { }
 Tag for write lock ownership.
 

Detailed Description

Support functions and classes for threads and mixed-mode for the Runtime System.

Macro Definition Documentation

◆ STAPL_RUNTIME_DETECT_DATA_RACE

#define STAPL_RUNTIME_DETECT_DATA_RACE ( )
Value:
static std::atomic<int> drd ## __LINE__(0); \
stapl::runtime::data_race_helper drd_helper ## __LINE__( \
__FILE__, __LINE__, BOOST_CURRENT_FUNCTION, drd ## __LINE__);

Detects data races in a class static or stand-alone function.

Function Documentation

◆ fork_impl()

static void stapl::runtime::fork_impl ( const unsigned int  parent_tid,
thread_info_t const &  parent_info,
const unsigned int  end_level,
const unsigned int  af_offset,
std::function< void(unsigned int)>  f 
)
static

Recursive forking for implementing concurrency::fork().

Parameters
parent_tidParent thread id.
parent_infoParent thread information.
end_levelLast required level.
af_offsetAffinity tag offset for the newly created threads.
fFunction to invoke at the end of the recursion.