21#include <condition_variable>
49 std::unique_lock<std::mutex> guard(
m_);
53 auto t = std::move(
items_.front());
59 std::unique_lock<std::mutex> guard(
m_);
68 static_assert(std::is_assignable_v<T,
decltype(u)>);
69 std::lock_guard<std::mutex> guard(
m_);
74 items_.push_back(std::forward<U>(u));
80 std::lock_guard<std::mutex> guard(
m_);
85 std::lock_guard<std::mutex> guard(
m_);
Definition: thread_safe_queue.h:37
ThreadSafeQueue()=default
QueueFullHandler max_elements_handler_
Definition: thread_safe_queue.h:105
std::deque< T > QueueImpl
Definition: thread_safe_queue.h:39
ThreadSafeQueue(size_t max_elements, QueueFullHandler max_elements_handler)
Definition: thread_safe_queue.h:43
bool IsEmpty()
Definition: thread_safe_queue.h:79
QueueImpl items_
Definition: thread_safe_queue.h:107
QueueImpl PopAll()
Definition: thread_safe_queue.h:58
bool Push(U &&u)
Definition: thread_safe_queue.h:67
std::condition_variable new_item_
Definition: thread_safe_queue.h:106
T Pop()
Definition: thread_safe_queue.h:48
size_t max_elements_
Definition: thread_safe_queue.h:104
bool DropItemsIfAtCapacity()
Definition: thread_safe_queue.h:91
bool IsFull()
Definition: thread_safe_queue.h:84
std::mutex m_
Definition: thread_safe_queue.h:103
std::function< void(QueueImpl *)> QueueFullHandler
Definition: thread_safe_queue.h:40
Definition: alloc_driver.h:20
Definition: logging.h:464