mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
9 lines
No EOL
5.9 KiB
HTML
9 lines
No EOL
5.9 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCBlockingQueue (containers.CCBlockingQueue)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCBlockingQueue</span></h1></header><h2>Blocking Queue</h2><p>This queue has a limited size. Pushing a value on the queue when it
|
|
is full will block.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code></code><code></code></div><div class="doc"><p>Safe-thread queue for values of type <code class="code">'a</code></p></div></div><div class="spec val" id="val-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a new queue of size <code class="code">n</code>. Using <code class="code">n=max_int</code> amounts to using
|
|
an infinite queue (2^61 items is a lot to fit in memory); using <code class="code">n=1</code>
|
|
amounts to using a box with 0 or 1 elements inside.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">n < 1</code>.</li></ul></div></div><div class="spec val" id="val-push"><a href="#val-push" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>push : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">push q x</code> pushes <code class="code">x</code> into <code class="code">q</code>, blocking if the queue is full.</p></div></div><div class="spec val" id="val-take"><a href="#val-take" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>Take the first element, blocking if needed.</p></div></div><div class="spec val" id="val-push_list"><a href="#val-push_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>push_list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> list <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Push items of the list, one by one.</p></div></div><div class="spec val" id="val-take_list"><a href="#val-take_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">take_list n q</code> takes <code class="code">n</code> elements out of <code class="code">q</code>.</p></div></div><div class="spec val" id="val-try_take"><a href="#val-try_take" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>try_take : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>Take the first element if the queue is not empty, return <code class="code">None</code>
|
|
otherwise.</p></div></div><div class="spec val" id="val-try_push"><a href="#val-try_push" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>try_push : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">try_push q x</code> pushes <code class="code">x</code> into <code class="code">q</code> if <code class="code">q</code> is not full, in which
|
|
case it returns <code class="code">true</code>.
|
|
If it fails because <code class="code">q</code> is full, it returns <code class="code">false</code>.</p></div></div><div class="spec val" id="val-peek"><a href="#val-peek" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> option</code></div><div class="doc"><p><code class="code">peek q</code> returns <code class="code">Some x</code> if <code class="code">x</code> is the first element of <code class="code">q</code>,
|
|
otherwise it returns <code class="code">None</code>.</p></div></div><div class="spec val" id="val-size"><a href="#val-size" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>size : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p>Number of elements currently in the queue.</p></div></div><div class="spec val" id="val-capacity"><a href="#val-capacity" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>capacity : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p>Number of values the queue can hold.</p></div></div></body></html> |