Retrieve a value from the front of the queue if there is one.
bool try_pop(T& target);
T must be MoveAssignable.
Checks whether there is an item on the queue without blocking.
If the queue is empty then try_pop() returns immediately and target is unchanged, otherwise
it removes the front item from the queue and move-assigns it to
target. If an exception
is thrown by the move constructor or move-assignment operator of
T whilst retrieving
the value then that item is lost.
true if an item was
removed, or false
otherwise.
Any exception thrown by the move constructor of T.
jss::poisoned_queue if *this
has been poisoned.
Only one thread may call pop() or try_pop() on a particular instance of
jss::mpsc_fifo concurrently. If two
threads call pop() or try_pop() on the same instance and neither
call happens-before the other then the behaviour
is undefined.
A call to push() synchronizes-with
a call to try_pop() that retrieves the value pushed.
#include <jss/mpsc_fifo.hpp>