ocaml-containers/2.0/containers.thread/CCPool/Make/Fut/index.html
2018-01-21 15:48:04 -06:00

22 lines
No EOL
17 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fut (containers.thread.CCPool.Make.Fut)</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.thread</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCPool.Make.Fut</span></h1></header><div class="doc"><div class="h7">Futures</div><p>The futures are registration points for callbacks, storing a <a href="index.html#val-state">state</a>,
that are executed in the pool using <a href="../index.html#val-run">run</a>.</p></div><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 future value of type 'a</p></div></div><div class="spec type" id="type-future"><a href="#type-future" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a future</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code><code></code></div><div class="doc"></div></div><h3>Constructors</h3><div class="spec val" id="val-return"><a href="#val-return" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>return : <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>Future that is already computed.</p></div></div><div class="spec val" id="val-fail"><a href="#val-fail" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fail : exn <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>Future that fails immediately.</p></div></div><div class="spec val" id="val-make"><a href="#val-make" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make : (unit <span class="keyword">&#8209;&gt;</span> <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 future, representing a value that will be computed by
the function. If the function raises, the future will fail.</p></div></div><div class="spec val" id="val-make1"><a href="#val-make1" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make1 : (<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">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-make2"><a href="#val-make2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make2 : (<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">'c</span>) <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">'c</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><h3>Basics</h3><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>Blocking get: wait for the future to be evaluated, and get the value,
or the exception that failed the future is returned.
raise e if the future failed with e.</p></div></div><div class="spec val" id="val-state"><a href="#val-state" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>state : <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> <a href="../../index.html#type-state">state</a></code></div><div class="doc"><p>State of the future.</p></div></div><div class="spec val" id="val-is_done"><a href="#val-is_done" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_done : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Is the future evaluated (success/failure)?</p></div></div><h3>Combinators</h3><div class="spec val" id="val-on_success"><a href="#val-on_success" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>on_success : <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) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Attach a handler to be called upon success.
The handler should not call functions on the future.
Might be evaluated now if the future is already done.</p></div></div><div class="spec val" id="val-on_failure"><a href="#val-on_failure" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>on_failure : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (exn <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Attach a handler to be called upon failure.
The handler should not call any function on the future.
Might be evaluated now if the future is already done.</p></div></div><div class="spec val" id="val-on_finish"><a href="#val-on_finish" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>on_finish : <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> <a href="../../index.html#type-state">state</a> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Attach a handler to be called when the future is evaluated.
The handler should not call functions on the future.
Might be evaluated now if the future is already done.</p></div></div><div class="spec val" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>flat_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Monadic combination of futures.</p></div></div><div class="spec val" id="val-and_then"><a href="#val-and_then" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>and_then : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (unit <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Wait for the first future to succeed, then launch the second.</p></div></div><div class="spec val" id="val-sequence_a"><a href="#val-sequence_a" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sequence_a : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> array <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> array <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Future that waits for all previous futures to terminate. If any future
in the array fails, <code class="code">sequence_a l</code> fails too.</p></div></div><div class="spec val" id="val-map_a"><a href="#val-map_a" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map_a : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> array <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> array <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">map_l f a</code> maps <code class="code">f</code> on every element of <code class="code">a</code>, and will return
the array of every result if all calls succeed, or an error otherwise.</p></div></div><div class="spec val" id="val-sequence_l"><a href="#val-sequence_l" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sequence_l : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Future that waits for all previous futures to terminate. If any future
in the list fails, <code class="code">sequence_l l</code> fails too.</p></div></div><div class="spec val" id="val-map_l"><a href="#val-map_l" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map_l : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">map_l f l</code> maps <code class="code">f</code> on every element of <code class="code">l</code>, and will return
the list of every result if all calls succeed, or an error otherwise.</p></div></div><div class="spec val" id="val-choose_a"><a href="#val-choose_a" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>choose_a : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> array <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>Choose among those futures (the first to terminate). Behaves like
the first future that terminates, by failing if the future fails.</p></div></div><div class="spec val" id="val-choose_l"><a href="#val-choose_l" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>choose_l : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> list <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>Choose among those futures (the first to terminate). Behaves like
the first future that terminates, by failing if the future fails.</p></div></div><div class="spec val" id="val-map"><a href="#val-map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map : (<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">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Map the value inside the future. The function doesn't run in its
own task; if it can take time, use <a href="index.html#val-flat_map">flat_map</a> or <a href="index.html#val-map_async">map_async</a>.</p></div></div><div class="spec val" id="val-map_async"><a href="#val-map_async" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map_async : (<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">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Map the value inside the future, to be computed in a separated job.</p></div></div><div class="spec val" id="val-app"><a href="#val-app" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>app : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">app f x</code> applies the result of <code class="code">f</code> to the result of <code class="code">x</code>.</p></div></div><div class="spec val" id="val-app_async"><a href="#val-app_async" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>app_async : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">app_async f x</code> applies the result of <code class="code">f</code> to the result of <code class="code">x</code>, in
a separated job scheduled in the pool.</p></div></div><div class="spec val" id="val-sleep"><a href="#val-sleep" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sleep : float <span class="keyword">&#8209;&gt;</span> unit <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Future that returns with success in the given amount of seconds. Blocks
the thread! If you need to wait on many events, consider
using <a href="../../../CCTimer/index.html">CCTimer</a>.</p></div></div><div class="spec module" id="module-Infix"><a href="#module-Infix" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Infix/index.html">Infix</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec val" id="val-(&gt;&gt;=)"><a href="#val-(&gt;&gt;=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&gt;&gt;=) : <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> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-(&gt;&gt;)"><a href="#val-(&gt;&gt;)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&gt;&gt;) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (unit <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-(&gt;|=)"><a href="#val-(&gt;|=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&gt;|=) : <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> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Alias to <a href="index.html#val-map">map</a>.</p></div></div><div class="spec val" id="val-(&lt;*&gt;)"><a href="#val-(&lt;*&gt;)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&lt;*&gt;) : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Alias to <a href="index.html#val-app">app</a>.</p></div></div></body></html>