mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-05-06 17:34:32 -04:00
2 lines
5.2 KiB
HTML
2 lines
5.2 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lf_queue (eio.Eio_utils.Lf_queue)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">Index</a> » <a href="../../index.html">eio</a> » <a href="../index.html">Eio_utils</a> » Lf_queue</nav><header class="odoc-preamble"><h1>Module <code><span>Eio_utils.Lf_queue</span></code></h1><p>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.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a t</span></span></code></div><div class="spec-doc"><p>A queue of items of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Closed"><a href="#exception-Closed" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Closed</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>unit <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>create ()</code> is a new empty queue.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-push"><a href="#val-push" class="anchor"></a><code><span><span class="keyword">val</span> push : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>push t x</code> adds <code>x</code> to the tail of the queue. This can be used safely by multiple producer domains, in parallel with the other operations.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <a href="#exception-Closed"><code>Closed</code></a> <p>if <code>t</code> is closed.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-push_head"><a href="#val-push_head" class="anchor"></a><code><span><span class="keyword">val</span> push_head : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>push_head t x</code> inserts <code>x</code> at the head of the queue. This can only be used by the consumer (if run in parallel with <a href="#val-pop"><code>pop</code></a>, the item might be skipped).</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <a href="#exception-Closed"><code>Closed</code></a> <p>if <code>t</code> is closed and empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pop"><a href="#val-pop" class="anchor"></a><code><span><span class="keyword">val</span> pop : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p><code>pop t</code> removes the head item from <code>t</code> and returns it. Returns <code>None</code> if <code>t</code> is currently empty.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <a href="#exception-Closed"><code>Closed</code></a> <p>if <code>t</code> has been closed and is empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span><span class="keyword">val</span> is_empty : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_empty t</code> is <code>true</code> if calling <code>pop</code> would return <code>None</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <a href="#exception-Closed"><code>Closed</code></a> <p>if <code>t</code> has been closed and is empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-close"><a href="#val-close" class="anchor"></a><code><span><span class="keyword">val</span> close : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>close t</code> marks <code>t</code> as closed, preventing any further items from being pushed.</p></div></div></div></body></html>
|