9 template < class T, typename std::deque< T >::size_type max_size =
10 std::numeric_limits< typename std::deque< T >::size_type >::max() >
14 using size_type =
typename std::deque< T >::size_type;
26 bool push(
const T& entry )
28 std::lock_guard< std::mutex > lock( m_mutex );
30 if ( m_queue.size() == max_size )
33 m_queue.push_back( entry );
39 std::lock_guard< std::mutex > lock( m_mutex );
41 if ( m_queue.size() == max_size )
44 m_queue.push_back( std::move( entry ) );
48 template <
class... Args >
51 std::lock_guard< std::mutex > lock( m_mutex );
53 if ( m_queue.size() == max_size )
56 m_queue.emplace_back( std::forward< Args >( args )... );
62 std::lock_guard< std::mutex > lock( m_mutex );
63 if ( m_queue.empty() )
68 auto entry = std::move( m_queue.front() );
75 std::lock_guard< std::mutex > lock( m_mutex );
81 std::deque< T > m_queue;
thread_safe_queue_t & operator=(const thread_safe_queue_t &)=delete
void clear()
Definition: thread_safe_queue.hpp:73
bool push(const T &entry)
Definition: thread_safe_queue.hpp:26
bool emplace(Args &&... args)
Definition: thread_safe_queue.hpp:49
bool push(T &&entry)
Definition: thread_safe_queue.hpp:37
thread_safe_queue_t()=default
Definition: thread_safe_queue.hpp:11
typename std::deque< Task >::size_type size_type
Definition: thread_safe_queue.hpp:14
std::optional< T > try_pop()
Definition: thread_safe_queue.hpp:60