mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
2 lines
No EOL
6.5 KiB
HTML
2 lines
No EOL
6.5 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCBlockingQueue (containers-thread.CCBlockingQueue)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.1.1"/><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">containers-thread</a> » CCBlockingQueue</nav><header class="odoc-preamble"><h1>Module <code><span>CCBlockingQueue</span></code></h1></header><nav class="odoc-toc"><ul><li><a href="#blocking-queue">Blocking Queue</a></li></ul></nav><div class="odoc-content"><h2 id="blocking-queue"><a href="#blocking-queue" class="anchor"></a>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-tags"><li class="since"><span class="at-tag">since</span> 0.16</li></ul><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><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>Safe-thread queue for values of type <code>'a</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-create" class="anchored"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>int <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>Create a new queue of size <code>n</code>. Using <code>n=max_int</code> amounts to using an infinite queue (2^61 items is a lot to fit in memory); using <code>n=1</code> amounts to using a box with 0 or 1 elements inside.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>n < 1</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-push" class="anchored"><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 q x</code> pushes <code>x</code> into <code>q</code>, blocking if the queue is full.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-take" class="anchored"><a href="#val-take" class="anchor"></a><code><span><span class="keyword">val</span> take : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Take the first element, blocking if needed.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-push_list" class="anchored"><a href="#val-push_list" class="anchor"></a><code><span><span class="keyword">val</span> push_list : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Push items of the list, one by one.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-take_list" class="anchored"><a href="#val-take_list" class="anchor"></a><code><span><span class="keyword">val</span> take_list : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span><span class="type-var">'a</span> list</span></span></code></div><div class="spec-doc"><p><code>take_list n q</code> takes <code>n</code> elements out of <code>q</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-try_take" class="anchored"><a href="#val-try_take" class="anchor"></a><code><span><span class="keyword">val</span> try_take : <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>Take the first element if the queue is not empty, return <code>None</code> otherwise.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-try_push" class="anchored"><a href="#val-try_push" class="anchor"></a><code><span><span class="keyword">val</span> try_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> bool</span></code></div><div class="spec-doc"><p><code>try_push q x</code> pushes <code>x</code> into <code>q</code> if <code>q</code> is not full, in which case it returns <code>true</code>. If it fails because <code>q</code> is full, it returns <code>false</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-peek" class="anchored"><a href="#val-peek" class="anchor"></a><code><span><span class="keyword">val</span> peek : <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>peek q</code> returns <code>Some x</code> if <code>x</code> is the first element of <code>q</code>, otherwise it returns <code>None</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-size" class="anchored"><a href="#val-size" class="anchor"></a><code><span><span class="keyword">val</span> size : <span><span><span class="type-var">_</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Number of elements currently in the queue.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-capacity" class="anchored"><a href="#val-capacity" class="anchor"></a><code><span><span class="keyword">val</span> capacity : <span><span><span class="type-var">_</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Number of values the queue can hold.</p></div></div></div></body></html> |