package lockfree

  1. Overview
  2. Docs

Lock-free data structures for Multicore OCaml

Lockfree

module Ws_deque : sig ... end

A lock-free single-producer, multi-consumer dynamic-size double-ended queue (deque).

module Spsc_queue : sig ... end
module Mpsc_queue : sig ... end

A lock-free multi-producer, single-consumer, thread-safe queue without support for cancellation. This makes a good data structure for a scheduler's run queue and is currently (September 2022) used for Eio's scheduler.

module Treiber_stack : sig ... end

Classic multi-producer multi-consumer Treiber stack. Robust and flexible. Recommended starting point when needing LIFO structure.

module Michael_scott_queue : sig ... end

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.

module Mpmc_relaxed_queue : sig ... end

A lock-free multi-producer, multi-consumer, thread-safe, relaxed-FIFO queue.

module Backoff : sig ... end

Truncated exponential backoff.

OCaml

Innovation. Community. Security.