mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
22 lines
No EOL
17 KiB
HTML
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> — <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">‑></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">‑></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">‑></span> <span class="type-var">'a</span>) <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 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">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></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">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'c</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></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">‑></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">‑></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">‑></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">‑></span> (<span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></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">‑></span> (exn <span class="keyword">‑></span> unit) <span class="keyword">‑></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">‑></span> (<span class="type-var">'a</span> <a href="../../index.html#type-state">state</a> <span class="keyword">‑></span> unit) <span class="keyword">‑></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">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></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">‑></span> (unit <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></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">‑></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">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></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">‑></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">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <span class="type-var">'a</span> list <span class="keyword">‑></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">‑></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">‑></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">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></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">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></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">‑></span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></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">‑></span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></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">‑></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-(>>=)"><a href="#val-(>>=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(>>=) : <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> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></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-(>>)"><a href="#val-(>>)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(>>) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (unit <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></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-(>|=)"><a href="#val-(>|=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(>|=) : <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> <span class="type-var">'b</span>) <span class="keyword">‑></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-(<*>)"><a href="#val-(<*>)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(<*>) : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></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> |