Go to the documentation of this file.
15 #include <condition_variable>
31 mutable std::mutex _mutex;
33 mutable std::condition_variable _new_work_available;
35 mutable std::condition_variable _all_work_dispatched;
60 template <
typename... Args>
Special queue that allows the extraction of item using custom policies.
Definition: queue.hpp:23
void wait_empty() const
Wait for the queue to be empty.
Definition: sharing_queue.inl:57
void insert(T &&work)
Definition: sharing_queue.inl:24
Result try_extract(const policy::IPolicy< T > &policy)
Definition: sharing_queue.inl:9
Used to handle errors without using exceptions.
Definition: result.hpp:18
typename policy::Queue< fur::PieceTask >::MutateFn MutateFn
Definition: sharing_queue.hpp:45
Error
All possible error that can occur.
Definition: queue.hpp:29
void begin_skip_waiting()
Definition: sharing_queue.inl:75
std::function< bool(T &)> MutateFn
Definition: queue.hpp:41
void force_wakeup()
Wake up all waiting threads.
Definition: sharing_queue.inl:43
typename policy::Queue< fur::PieceTask >::Error Error
Definition: sharing_queue.hpp:41
void mutate(MutateFn mutation)
Definition: sharing_queue.inl:66
void wait_work() const
Wait for a new item in the queue.
Definition: sharing_queue.inl:48
void emplace(Args &&... args)
Definition: sharing_queue.inl:34
Definition: policy.hpp:19
Definition: sharing_queue.hpp:26
SharedQueue()
Definition: sharing_queue.inl:6