Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Michael-Scott Queue. A classic multi-producer multi-consumer queue, robust and flexible. Recommended starting point when needing FIFO structure. It is inspired by Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms.
val create : unit -> 'a t
Create a new queue, which is initially empty.
val is_empty : 'a t -> bool
is_empty q
returns empty if q
is empty.
val push : 'a t -> 'a -> unit
push q v
pushes v
to the back of the queue.
val pop : 'a t -> 'a option
pop q
pops an element e
from the front of the queue and returns Some v
if the queue is non-empty. Otherwise, returns None
.
val clean_until : 'a t -> ('a -> bool) -> unit
clean_until q f
drops the prefix of the queue until the element e
, where f e
is true
. If no such element exists, then the queue is emptied.