ocaml-containers/2.3/containers/CCLock/index.html
2018-08-06 11:54:50 -05:00

10 lines
No EOL
11 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCLock (containers.CCLock)</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> &mdash; <span class="package">package <a href="../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCLock</span></h1></header><h2>Utils around Mutex</h2><p>A value wrapped into a Mutex, for more safety.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</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>A value surrounded with a lock</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 : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a new protected value.</p></div></div><div class="spec val" id="val-with_lock"><a href="#val-with_lock" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>with_lock : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">with_lock l f</code> runs <code class="code">f x</code> where <code class="code">x</code> is the value protected with
the lock <code class="code">l</code>, in a critical section. If <code class="code">f x</code> fails, <code class="code">with_lock l f</code>
fails too but the lock is released.</p></div></div><div class="spec val" id="val-try_with_lock"><a href="#val-try_with_lock" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>try_with_lock : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">try_with_lock l f</code> runs <code class="code">f x</code> in a critical section if <code class="code">l</code> is not
locked. <code class="code">x</code> is the value protected by the lock <code class="code">l</code>. If <code class="code">f x</code>
fails, <code class="code">try_with_lock l f</code> fails too but the lock is released.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.22</li></ul></div></div><div class="spec module" id="module-LockRef"><a href="#module-LockRef" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="LockRef/index.html">LockRef</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><p>Type allowing to manipulate the lock as a reference.</p></div></div><div class="spec val" id="val-with_lock_as_ref"><a href="#val-with_lock_as_ref" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>with_lock_as_ref : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> f:(<span class="type-var">'a</span> <a href="LockRef/index.html#type-t">LockRef.t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">with_lock_as_ref l f</code> calls <code class="code">f</code> with a reference-like object
that allows to manipulate the value of <code class="code">l</code> safely.
The object passed to <code class="code">f</code> must not escape the function call.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-update"><a href="#val-update" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>update : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span>) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">update l f</code> replaces the content <code class="code">x</code> of <code class="code">l</code> with <code class="code">f x</code>, atomically.</p></div></div><div class="spec val" id="val-update_map"><a href="#val-update_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>update_map : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">update_map l f</code> computes <code class="code">x', y = f (get l)</code>, then puts <code class="code">x'</code> in <code class="code">l</code>
and returns <code class="code">y</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-mutex"><a href="#val-mutex" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mutex : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> Mutex.t</code></div><div class="doc"><p>Underlying mutex.</p></div></div><div class="spec val" id="val-get"><a href="#val-get" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Atomically get the value in the lock. The value that is returned
isn't protected!</p></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Atomically set the value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-incr"><a href="#val-incr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>incr : int <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Atomically increment the value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-decr"><a href="#val-decr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>decr : int <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Atomically decrement the value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-incr_then_get"><a href="#val-incr_then_get" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>incr_then_get : int <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p><code class="code">incr_then_get x</code> increments <code class="code">x</code>, and returns its new value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-get_then_incr"><a href="#val-get_then_incr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_then_incr : int <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p><code class="code">get_then_incr x</code> increments <code class="code">x</code>, and returns its previous value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-decr_then_get"><a href="#val-decr_then_get" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>decr_then_get : int <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p><code class="code">decr_then_get x</code> decrements <code class="code">x</code>, and returns its new value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-get_then_decr"><a href="#val-get_then_decr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_then_decr : int <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p><code class="code">get_then_decr x</code> decrements <code class="code">x</code>, and returns its previous value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-get_then_set"><a href="#val-get_then_set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_then_set : bool <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">get_then_set b</code> sets <code class="code">b</code> to <code class="code">true</code>, and returns the old value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-get_then_clear"><a href="#val-get_then_clear" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_then_clear : bool <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">get_then_clear b</code> sets <code class="code">b</code> to <code class="code">false</code>, and returns the old value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div></body></html>