package lockfree

  1. Overview
  2. Docs

Module LockfreeSource

Lock-free data structures for Multicore OCaml

Lockfree

Sourcemodule Ws_deque : sig ... end

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

Sourcemodule Spsc_queue : sig ... end
Sourcemodule 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.

Sourcemodule Treiber_stack : sig ... end

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

Sourcemodule 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.

Sourcemodule Mpmc_relaxed_queue : sig ... end

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

Sourcemodule Backoff : sig ... end

Truncated exponential backoff.