BitMagic-C++
Public Types | Public Member Functions | Protected Types | Protected Attributes | Friends
bm::queue_sync< Value, Lock > Class Template Reference

Thread-sync queue with MT access protecion. More...

#include <bmthreadpool.h>

Inheritance diagram for bm::queue_sync< Value, Lock >:
Inheritance graph
[legend]

Public Types

typedef Value value_type
 
typedef Lock lock_type
 

Public Member Functions

 queue_sync () noexcept
 constructor More...
 
void push (const value_type &v)
 Push value to the back of the queue. More...
 
void push_no_lock (const value_type &v)
 Push value to the back of the queue without lock protection It is assumed that processing did not start and we are just staging the batch. More...
 
bool try_pop (value_type &v)
 Extract value. More...
 
bool empty () const
  More...
 
void lock () noexcept(bm::is_lock_noexcept< lock_type >::value)
 lock the queue access More...
 
bool try_lock () noexcept(bm::is_lock_noexcept< lock_type >::value)
 Try to lock the queue exclusively. More...
 
void unlock () noexcept(bm::is_lock_noexcept< lock_type >::value)
 unlock the queue access More...
 

Protected Types

typedef std::queue< value_typequeue_type
 

Protected Attributes

std::mutex signal_mut_
 signal mutex for q submissions More...
 
std::condition_variable queue_push_cond_
 mutex paired conditional More...
 

Friends

template<typename QV , typename L >
class bm::thread_pool
 

Detailed Description

template<typename Value, typename Lock>
class bm::queue_sync< Value, Lock >

Thread-sync queue with MT access protecion.

Definition at line 129 of file bmthreadpool.h.

Constructor & Destructor Documentation

◆ queue_sync()

template<typename Value , typename Lock >
bm::queue_sync< Value, Lock >::queue_sync ( )
inlinenoexcept

constructor

Definition at line 137 of file bmthreadpool.h.

Member Function Documentation

◆ empty()

template<typename Value , typename Lock >
bool bm::queue_sync< Value, Lock >::empty ( ) const
inline
Returns
true if empty

Definition at line 181 of file bmthreadpool.h.

◆ lock()

template<typename Value , typename Lock >
void bm::queue_sync< Value, Lock >::lock ( )
inlinenoexcept

lock the queue access

See also
push_no_lock, unlock

Definition at line 189 of file bmthreadpool.h.

◆ push()

template<typename Value , typename Lock >
void bm::queue_sync< Value, Lock >::push ( const value_type v)
inline

Push value to the back of the queue.

Parameters
v- value to put in the queue
See also
push_no_lock

Definition at line 144 of file bmthreadpool.h.

References bm::queue_sync< Value, Lock >::queue_push_cond_.

◆ push_no_lock()

template<typename Value , typename Lock >
void bm::queue_sync< Value, Lock >::push_no_lock ( const value_type v)
inline

Push value to the back of the queue without lock protection It is assumed that processing did not start and we are just staging the batch.

Parameters
v- value to put in the queue
See also
push

Definition at line 160 of file bmthreadpool.h.

◆ try_lock()

template<typename Value , typename Lock >
bool bm::queue_sync< Value, Lock >::try_lock ( )
inlinenoexcept

Try to lock the queue exclusively.

Definition at line 194 of file bmthreadpool.h.

◆ try_pop()

template<typename Value , typename Lock >
bool bm::queue_sync< Value, Lock >::try_pop ( value_type v)
inline

Extract value.

Parameters
v- [out] value returned
Returns
true if extracted

Definition at line 170 of file bmthreadpool.h.

◆ unlock()

template<typename Value , typename Lock >
void bm::queue_sync< Value, Lock >::unlock ( )
inlinenoexcept

unlock the queue access

See also
push_no_lock, lock

Definition at line 199 of file bmthreadpool.h.

References bm::queue_sync< Value, Lock >::queue_push_cond_.

Field Documentation

◆ queue_push_cond_

template<typename Value , typename Lock >
std::condition_variable bm::queue_sync< Value, Lock >::queue_push_cond_
protected

mutex paired conditional

Definition at line 222 of file bmthreadpool.h.

Referenced by bm::queue_sync< Value, Lock >::push(), and bm::queue_sync< Value, Lock >::unlock().

◆ signal_mut_

template<typename Value , typename Lock >
std::mutex bm::queue_sync< Value, Lock >::signal_mut_
mutableprotected

signal mutex for q submissions

Definition at line 221 of file bmthreadpool.h.


The documentation for this class was generated from the following file: