package saturn_lockfree

  1. Overview
  2. Docs

Module Saturn_lockfree.Queue_unsafeSource

Michael-Scott classic multi-producer multi-consumer queue.

All functions are lockfree. It is the recommended starting point when needing FIFO structure. It is inspired by Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms.

Sourcetype 'a t

The type of lock-free queue.

Sourceval create : unit -> 'a t

create () returns a new queue, initially empty.

Sourceval is_empty : 'a t -> bool

is_empty q returns empty if q is empty.

Sourceval push : 'a t -> 'a -> unit

push q v adds the element v at the end of the queue q.

Sourceexception Empty

Raised when pop or peek is applied to an empty queue.

Sourceval pop_exn : 'a t -> 'a

pop q removes and returns the first element in queue q.

  • raises Empty

    if q is empty.

Sourceval pop_opt : 'a t -> 'a option

pop_opt q removes and returns the first element in queue q, or returns None if the queue is empty.

Sourceval peek_exn : 'a t -> 'a

peek q returns the first element in queue q.

  • raises Empty

    if q is empty.

Sourceval peek_opt : 'a t -> 'a option

peek_opt q returns the first element in queue q, or returns None if the queue is empty.

OCaml

Innovation. Community. Security.