"Poisons" the queue so that no more items can be pushed or popped.
void poison();
Marks *this
as poisoned. If any threads are currently
blocked in pop()
waiting on *this
then they are woken, and will
throw a jss::poisoned_queue
exception.
Any subsequent calls of push()
, pop()
or try_pop()
on *this
will throw a jss:poisoned_queue
exception.
Poisoning is an irreversible operation.
Nothing.
poison()
can be called concurrently with push()
, pop()
and try_pop()
without any external synchronization.
#include <jss/mpsc_fifo.hpp>