This commit is contained in:
c-cube 2024-02-16 02:14:10 +00:00
parent 53464533af
commit 9d4febe5f7
45 changed files with 170 additions and 34 deletions

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Exn_bt (moonpool.Moonpool.Exn_bt)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool</a> &#x00BB; Exn_bt</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool.Exn_bt</span></code></h1><p>Exception with backtrace.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> NEXT_RELEASE</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = exn * <a href="../../../ocaml/Stdlib/Printexc/index.html#type-raw_backtrace">Stdlib.Printexc.raw_backtrace</a></span></code></div><div class="spec-doc"><p>An exception bundled with a backtrace</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exn"><a href="#val-exn" class="anchor"></a><code><span><span class="keyword">val</span> exn : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> exn</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bt"><a href="#val-bt" class="anchor"></a><code><span><span class="keyword">val</span> bt : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../../../ocaml/Stdlib/Printexc/index.html#type-raw_backtrace">Stdlib.Printexc.raw_backtrace</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span>exn <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Stdlib/Printexc/index.html#type-raw_backtrace">Stdlib.Printexc.raw_backtrace</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Trivial builder</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span>exn <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>get exn</code> is <code>make exn (get_raw_backtrace ())</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_callstack"><a href="#val-get_callstack" class="anchor"></a><code><span><span class="keyword">val</span> get_callstack : <span>int <span class="arrow">&#45;&gt;</span></span> <span>exn <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-raise"><a href="#val-raise" class="anchor"></a><code><span><span class="keyword">val</span> raise : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Raise the exception with its save backtrace</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-show"><a href="#val-show" class="anchor"></a><code><span><span class="keyword">val</span> show : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Simple printing</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-result"><a href="#type-result" class="anchor"></a><code><span><span class="keyword">type</span> <span class="keyword">nonrec</span> <span>'a result</span></span><span> = <span><span>(<span class="type-var">'a</span>, <a href="#type-t">t</a>)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span></span></code></div></div></div></body></html>

View file

@ -3,6 +3,6 @@
<span><span class="label">size</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">num_tasks</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">shutdown</span>:<span>(<span><span class="label">wait</span>:bool <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><span class="label">ls</span>:<a href="../../Task_local_storage/index.html#type-storage">Task_local_storage.storage</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span>unit <span class="arrow">&#45;&gt;</span></span>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <a href="../../Fork_join/index.html"><code>Fork_join</code></a> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <span class="xref-unresolved">Moonpool__.Thread_local_storage_.key</span></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <code>Fork_join</code> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <a href="../../../Moonpool_private/Thread_local_storage_/index.html#type-key">Moonpool_private.Thread_local_storage_.key</a></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -3,6 +3,6 @@
<span><span class="label">size</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">num_tasks</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">shutdown</span>:<span>(<span><span class="label">wait</span>:bool <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><span class="label">ls</span>:<a href="../../Task_local_storage/index.html#type-storage">Task_local_storage.storage</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span>unit <span class="arrow">&#45;&gt;</span></span>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <a href="../../Fork_join/index.html"><code>Fork_join</code></a> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <span class="xref-unresolved">Moonpool__.Thread_local_storage_.key</span></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <code>Fork_join</code> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <a href="../../../Moonpool_private/Thread_local_storage_/index.html#type-key">Moonpool_private.Thread_local_storage_.key</a></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -3,6 +3,6 @@
<span><span class="label">size</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">num_tasks</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">shutdown</span>:<span>(<span><span class="label">wait</span>:bool <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><span class="label">ls</span>:<a href="../../Task_local_storage/index.html#type-storage">Task_local_storage.storage</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span>unit <span class="arrow">&#45;&gt;</span></span>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <a href="../../Fork_join/index.html"><code>Fork_join</code></a> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <span class="xref-unresolved">Moonpool__.Thread_local_storage_.key</span></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <code>Fork_join</code> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <a href="../../../Moonpool_private/Thread_local_storage_/index.html#type-key">Moonpool_private.Thread_local_storage_.key</a></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Task_local_storage (moonpool.Moonpool.Task_local_storage)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool</a> &#x00BB; Task_local_storage</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool.Task_local_storage</span></code></h1><p>Task-local storage.</p><p>This storage is associated to the current task, just like thread-local storage is associated with the current thread. The storage is carried along in case the current task is suspended.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> NEXT_RELEASE</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-storage"><a href="#type-storage" class="anchor"></a><code><span><span class="keyword">type</span> storage</span></code></div><div class="spec-doc"><p>Underlying storage for a task</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-key"><a href="#type-key" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a key</span></span></code></div><div class="spec-doc"><p>A key used to access a particular (typed) storage slot on every task.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_key"><a href="#val-new_key" class="anchor"></a><code><span><span class="keyword">val</span> new_key : <span><span class="label">init</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-key">key</a></span></span></code></div><div class="spec-doc"><p><code>new_key ~init ()</code> makes a new key. Keys are expensive and should never be allocated dynamically or in a loop. The correct pattern is, at toplevel:</p><pre class="language-ocaml"><code> let k_foo : foo Task_ocal_storage.key =
Task_local_storage.new_key ~init:(fun () -&gt; make_foo ()) ()
(* … *)
(* use it: *)
let … = Task_local_storage.get k_foo</code></pre></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>get k</code> gets the value for the current task for key <code>k</code>. Must be run from inside a task running on a runner.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Failure</code> <p>otherwise</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>set k v</code> sets the storage for <code>k</code> to <code>v</code>. Must be run from inside a task running on a runner.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Failure</code> <p>otherwise</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_value"><a href="#val-with_value" class="anchor"></a><code><span><span class="keyword">val</span> with_value : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>with_value k v f</code> sets <code>k</code> to <code>v</code> for the duration of the call to <code>f()</code>. When <code>f()</code> returns (or fails), <code>k</code> is restored to its old value.</p></div></div></div></body></html>

View file

@ -1,2 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Thread_local_storage (moonpool.Moonpool.Thread_local_storage)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool</a> &#x00BB; Thread_local_storage</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool.Thread_local_storage</span></code></h1><p>Thread local storage</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-key"><a href="#type-key" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a key</span></span></code></div><div class="spec-doc"><p>A TLS key for values of type <code>'a</code>. This allows the storage of a single value of type <code>'a</code> per thread.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_key"><a href="#val-new_key" class="anchor"></a><code><span><span class="keyword">val</span> new_key : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-key">key</a></span></span></code></div><div class="spec-doc"><p>Allocate a new, generative key. When the key is used for the first time on a thread, the function is called to produce it.</p><p>This should only ever be called at toplevel to produce constants, do not use it in a loop.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Get the value for the current thread.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Set the value for the current thread.</p></div></div></div></body></html>

View file

@ -3,6 +3,6 @@
<span><span class="label">size</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">num_tasks</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">shutdown</span>:<span>(<span><span class="label">wait</span>:bool <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">run_async</span>:<span>(<span><span class="label">name</span>:string <span class="arrow">&#45;&gt;</span></span> <span><span class="label">ls</span>:<a href="../../Task_local_storage/index.html#type-storage">Task_local_storage.storage</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-task">task</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span>unit <span class="arrow">&#45;&gt;</span></span>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <a href="../../Fork_join/index.html"><code>Fork_join</code></a> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <span class="xref-unresolved">Moonpool__.Thread_local_storage_.key</span></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <code>Suspend_</code> on OCaml 5.x, so that <code>Fork_join</code> and other 5.x features work properly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-k_cur_runner"><a href="#val-k_cur_runner" class="anchor"></a><code><span><span class="keyword">val</span> k_cur_runner : <span><span><span><a href="../index.html#type-t">t</a> option</span> <a href="../../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <a href="../../../Moonpool_private/Thread_local_storage_/index.html#type-key">Moonpool_private.Thread_local_storage_.key</a></span></span></code></div><div class="spec-doc"><p>Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for <a href="../index.html#val-get_current_runner"><code>get_current_runner</code></a> to work.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,2 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Atomic_ (moonpool.Moonpool__Atomic_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Atomic_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Atomic_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Exn_bt (moonpool.Moonpool__Exn_bt)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Exn_bt</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Exn_bt</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Task_local_storage (moonpool.Moonpool__Task_local_storage)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Task_local_storage</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Task_local_storage</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -1,2 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Thread_local_storage_ (moonpool.Moonpool__Thread_local_storage_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Thread_local_storage_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Thread_local_storage_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -1,2 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Ws_deque_ (moonpool.Moonpool__Ws_deque_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Ws_deque_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Ws_deque_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fls (moonpool.Moonpool_fib.Fls)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_fib</a> &#x00BB; Fls</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_fib.Fls</span></code></h1><p>Fiber-local storage.</p><p>This storage is associated to the current fiber, just like thread-local storage is associated with the current thread.</p></header><div class="odoc-content"><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">struct</span> <span class="keyword">include</span> <a href="../../Moonpool/Task_local_storage/index.html">Moonpool.Task_local_storage</a> <span class="keyword">end</span></span></code></summary><div class="odoc-spec"><div class="spec type anchored" id="type-storage"><a href="#type-storage" class="anchor"></a><code><span><span class="keyword">type</span> storage</span><span> = <a href="../../Moonpool/Task_local_storage/index.html#type-storage">Moonpool.Task_local_storage.storage</a></span></code></div><div class="spec-doc"><p>Underlying storage for a task</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-key"><a href="#type-key" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a key</span></span><span> = <span><span class="type-var">'a</span> <a href="../../Moonpool/Task_local_storage/index.html#type-key">Moonpool.Task_local_storage.key</a></span></span></code></div><div class="spec-doc"><p>A key used to access a particular (typed) storage slot on every task.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_key"><a href="#val-new_key" class="anchor"></a><code><span><span class="keyword">val</span> new_key : <span><span class="label">init</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-key">key</a></span></span></code></div><div class="spec-doc"><p><code>new_key ~init ()</code> makes a new key. Keys are expensive and should never be allocated dynamically or in a loop. The correct pattern is, at toplevel:</p><pre class="language-ocaml"><code> let k_foo : foo Task_ocal_storage.key =
Task_local_storage.new_key ~init:(fun () -&gt; make_foo ()) ()
(* … *)
(* use it: *)
let … = Task_local_storage.get k_foo</code></pre></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>get k</code> gets the value for the current task for key <code>k</code>. Must be run from inside a task running on a runner.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Failure</code> <p>otherwise</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>set k v</code> sets the storage for <code>k</code> to <code>v</code>. Must be run from inside a task running on a runner.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Failure</code> <p>otherwise</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_value"><a href="#val-with_value" class="anchor"></a><code><span><span class="keyword">val</span> with_value : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>with_value k v f</code> sets <code>k</code> to <code>v</code> for the duration of the call to <code>f()</code>. When <code>f()</code> returns (or fails), <code>k</code> is restored to its old value.</p></div></div></details></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Handle (moonpool.Moonpool_fib.Handle)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_fib</a> &#x00BB; Handle</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_fib.Handle</span></code></h1><p>The unique name of a fiber</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = <span class="keyword">private</span> int</span></code></div><div class="spec-doc"><p>Unique, opaque identifier for a fiber.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span><span class="keyword">val</span> hash : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-generate_fresh"><a href="#val-generate_fresh" class="anchor"></a><code><span><span class="keyword">val</span> generate_fresh : <span>unit <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Generate a fresh, unique identifier</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Set"><a href="#module-Set" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Set/index.html">Set</a></span><span> : <a href="../../../ocaml/Stdlib/Set/module-type-S/index.html">Set.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../ocaml/Stdlib/Set/module-type-S/index.html#type-elt">elt</a> = <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Map"><a href="#module-Map" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Map/index.html">Map</a></span><span> : <a href="../../../ocaml/Stdlib/Map/module-type-S/index.html">Map.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../ocaml/Stdlib/Map/module-type-S/index.html#type-key">key</a> = <a href="#type-t">t</a></span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_fib (moonpool.Moonpool_fib)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_fib</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_fib</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Fiber"><a href="#module-Fiber" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Fiber/index.html">Fiber</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Fibers.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Fls"><a href="#module-Fls" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Fls/index.html">Fls</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Fiber-local storage.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Handle"><a href="#module-Handle" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Handle/index.html">Handle</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>The unique name of a fiber</p></div></div></div></body></html>

View file

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Fork_join (moonpool.Moonpool__Fork_join)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Fork_join</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Fork_join</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_fib__Fiber (moonpool.Moonpool_fib__Fiber)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_fib__Fiber</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_fib__Fiber</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Domain_ (moonpool.Moonpool__Domain_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Domain_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Domain_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_fib__Fls (moonpool.Moonpool_fib__Fls)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_fib__Fls</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_fib__Fls</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Util_pool_ (moonpool.Moonpool__Util_pool_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool__Util_pool_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Util_pool_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_fib__Handle (moonpool.Moonpool_fib__Handle)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_fib__Handle</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_fib__Handle</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fork_join (moonpool.Moonpool.Fork_join)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool</a> &#x00BB; Fork_join</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool.Fork_join</span></code></h1><p>Fork-join primitives.</p><p><b>NOTE</b> These are only available on OCaml 5.0 and above.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-both"><a href="#val-both" class="anchor"></a><code><span><span class="keyword">val</span> both : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> * <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>both f g</code> runs <code>f()</code> and <code>g()</code>, potentially in parallel, and returns their result when both are done. If any of <code>f()</code> and <code>g()</code> fails, then the whole computation fails.</p><p>This must be run from within the pool: for example, inside <code>Pool.run</code> or inside a <a href="../Fut/index.html#val-spawn"><code>Fut.spawn</code></a> computation. This is because it relies on an effect handler to be installed.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul><p><b>NOTE</b> this is only available on OCaml 5.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-both_ignore"><a href="#val-both_ignore" class="anchor"></a><code><span><span class="keyword">val</span> both_ignore : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">_</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">_</span>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Same as <code>both f g |&gt; ignore</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul><p><b>NOTE</b> this is only available on OCaml 5.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-for_"><a href="#val-for_" class="anchor"></a><code><span><span class="keyword">val</span> for_ : <span><span class="optlabel">?chunk_size</span>:int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>for_ n f</code> is the parallel version of <code>for i=0 to n-1 do f i done</code>.</p><p><code>f</code> is called with parameters <code>low</code> and <code>high</code> and must use them like so:</p><pre class="language-ocaml"><code>for j = low to high do (* … actual work *) done </code></pre><p>. If <code>chunk_size=1</code> then <code>low=high</code> and the loop is not actually needed.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">chunk_size</span> <p>controls the granularity of parallelism. The default chunk size is not specified. See <a href="#val-all_array"><code>all_array</code></a> or <a href="#val-all_list"><code>all_list</code></a> for more details.</p><p>Example:</p><pre class="language-ocaml"><code>let total_sum = Atomic.make 0
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_forkjoin (moonpool.Moonpool_forkjoin)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_forkjoin</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_forkjoin</span></code></h1><p>Fork-join primitives.</p><p><b>NOTE</b> These are only available on OCaml 5.0 and above.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-both"><a href="#val-both" class="anchor"></a><code><span><span class="keyword">val</span> both : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> * <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>both f g</code> runs <code>f()</code> and <code>g()</code>, potentially in parallel, and returns their result when both are done. If any of <code>f()</code> and <code>g()</code> fails, then the whole computation fails.</p><p>This must be run from within the pool: for example, inside <code>Pool.run</code> or inside a <code>Fut.spawn</code> computation. This is because it relies on an effect handler to be installed.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul><p><b>NOTE</b> this is only available on OCaml 5.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-both_ignore"><a href="#val-both_ignore" class="anchor"></a><code><span><span class="keyword">val</span> both_ignore : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">_</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">_</span>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Same as <code>both f g |&gt; ignore</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul><p><b>NOTE</b> this is only available on OCaml 5.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-for_"><a href="#val-for_" class="anchor"></a><code><span><span class="keyword">val</span> for_ : <span><span class="optlabel">?chunk_size</span>:int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>for_ n f</code> is the parallel version of <code>for i=0 to n-1 do f i done</code>.</p><p><code>f</code> is called with parameters <code>low</code> and <code>high</code> and must use them like so:</p><pre class="language-ocaml"><code>for j = low to high do (* … actual work *) done </code></pre><p>. If <code>chunk_size=1</code> then <code>low=high</code> and the loop is not actually needed.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">chunk_size</span> <p>controls the granularity of parallelism. The default chunk size is not specified. See <a href="#val-all_array"><code>all_array</code></a> or <a href="#val-all_list"><code>all_list</code></a> for more details.</p><p>Example:</p><pre class="language-ocaml"><code>let total_sum = Atomic.make 0
let() = for_ ~chunk_size:5 100
(fun low high -&gt;

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Dla_ (moonpool.Moonpool_private.Dla_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_private</a> &#x00BB; Dla_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private.Dla_</span></code></h1><p>Interface to Domain-local-await.</p><p>This is used to handle the presence or absence of DLA.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span><span>{</span></code><ol><li id="type-t.release" class="def record field anchored"><a href="#type-t.release" class="anchor"></a><code><span>release : <span>unit <span class="arrow">&#45;&gt;</span></span> unit;</span></code></li><li id="type-t.await" class="def record field anchored"><a href="#type-t.await" class="anchor"></a><code><span>await : <span>unit <span class="arrow">&#45;&gt;</span></span> unit;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-using"><a href="#val-using" class="anchor"></a><code><span><span class="keyword">val</span> using : <span><span class="label">prepare_for_await</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="label">while_running</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-setup_domain"><a href="#val-setup_domain" class="anchor"></a><code><span><span class="keyword">val</span> setup_domain : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Domain_ (moonpool.Moonpool_private.Domain_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_private</a> &#x00BB; Domain_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private.Domain_</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-recommended_number"><a href="#val-recommended_number" class="anchor"></a><code><span><span class="keyword">val</span> recommended_number : <span>unit <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = <span>unit <a href="../../../ocaml/Stdlib/Domain/index.html#type-t">Stdlib.Domain.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_id"><a href="#val-get_id" class="anchor"></a><code><span><span class="keyword">val</span> get_id : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-spawn"><a href="#val-spawn" class="anchor"></a><code><span><span class="keyword">val</span> spawn : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-relax"><a href="#val-relax" class="anchor"></a><code><span><span class="keyword">val</span> relax : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-join"><a href="#val-join" class="anchor"></a><code><span><span class="keyword">val</span> join : <span><span><span class="type-var">'a</span> <a href="../../../ocaml/Stdlib/Domain/index.html#type-t">Stdlib.Domain.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_main_domain"><a href="#val-is_main_domain" class="anchor"></a><code><span><span class="keyword">val</span> is_main_domain : <span>unit <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Thread_local_storage_ (moonpool.Moonpool_private.Thread_local_storage_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_private</a> &#x00BB; Thread_local_storage_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private.Thread_local_storage_</span></code></h1><p>Thread local storage</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-key"><a href="#type-key" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a key</span></span></code></div><div class="spec-doc"><p>A TLS key for values of type <code>'a</code>. This allows the storage of a single value of type <code>'a</code> per thread.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_key"><a href="#val-new_key" class="anchor"></a><code><span><span class="keyword">val</span> new_key : <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-key">key</a></span></span></code></div><div class="spec-doc"><p>Allocate a new, generative key. When the key is used for the first time on a thread, the function is called to produce it.</p><p>This should only ever be called at toplevel to produce constants, do not use it in a loop.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Get the value for the current thread.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Set the value for the current thread.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tracing_ (moonpool.Moonpool_private.Tracing_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_private</a> &#x00BB; Tracing_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private.Tracing_</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-dummy_span"><a href="#val-dummy_span" class="anchor"></a><code><span><span class="keyword">val</span> dummy_span : int64</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-enter_span"><a href="#val-enter_span" class="anchor"></a><code><span><span class="keyword">val</span> enter_span : <span>string <span class="arrow">&#45;&gt;</span></span> int64</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exit_span"><a href="#val-exit_span" class="anchor"></a><code><span><span class="keyword">val</span> exit_span : <span>int64 <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-enabled"><a href="#val-enabled" class="anchor"></a><code><span><span class="keyword">val</span> enabled : <span>unit <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_thread_name"><a href="#val-set_thread_name" class="anchor"></a><code><span><span class="keyword">val</span> set_thread_name : <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ws_deque_ (moonpool.Moonpool_private.Ws_deque_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; <a href="../index.html">Moonpool_private</a> &#x00BB; Ws_deque_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private.Ws_deque_</span></code></h1><p>Work-stealing deque.</p><p>Adapted from &quot;Dynamic circular work stealing deque&quot;, Chase &amp; Lev.</p><p>However note that this one is not dynamic in the sense that there is no resizing. Instead we return <code>false</code> when <code>push</code> fails, which keeps the implementation fairly lightweight.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><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>Deque containing values of type <code>'a</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span><span class="label">dummy</span>:<span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</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 deque.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-push"><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">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Push value at the bottom of deque. returns <code>true</code> if it succeeds. This must be called only by the owner thread.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pop"><a href="#val-pop" class="anchor"></a><code><span><span class="keyword">val</span> pop : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p>Pop value from the bottom of deque. This must be called only by the owner thread.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-steal"><a href="#val-steal" class="anchor"></a><code><span><span class="keyword">val</span> steal : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p>Try to steal from the top of deque. This is thread-safe.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-size"><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">&#45;&gt;</span></span> int</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private (moonpool.Moonpool_private)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Atomic_"><a href="#module-Atomic_" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Atomic_/index.html">Atomic_</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Dla_"><a href="#module-Dla_" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Dla_/index.html">Dla_</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Interface to Domain-local-await.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Domain_"><a href="#module-Domain_" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Domain_/index.html">Domain_</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Thread_local_storage_"><a href="#module-Thread_local_storage_" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Thread_local_storage_/index.html">Thread_local_storage_</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Thread local storage</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tracing_"><a href="#module-Tracing_" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Tracing_/index.html">Tracing_</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ws_deque_"><a href="#module-Ws_deque_" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Ws_deque_/index.html">Ws_deque_</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Work-stealing deque.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private__Atomic_ (moonpool.Moonpool_private__Atomic_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private__Atomic_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private__Atomic_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private__Dla_ (moonpool.Moonpool_private__Dla_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private__Dla_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private__Dla_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private__Domain_ (moonpool.Moonpool_private__Domain_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private__Domain_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private__Domain_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private__Thread_local_storage_ (moonpool.Moonpool_private__Thread_local_storage_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private__Thread_local_storage_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private__Thread_local_storage_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private__Tracing_ (moonpool.Moonpool_private__Tracing_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private__Tracing_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private__Tracing_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool_private__Ws_deque_ (moonpool.Moonpool_private__Ws_deque_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">moonpool</a> &#x00BB; Moonpool_private__Ws_deque_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool_private__Ws_deque_</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -19,7 +19,8 @@ In addition, some concurrency and parallelism primitives are provided:
On OCaml 5 (meaning there's actual domains and effects, not just threads),
a `Fut.await` primitive is provided. It's simpler and more powerful
than the monadic combinators.
- `Moonpool.Fork_join` provides the fork-join parallelism primitives
- `Moonpool_forkjoin`, in the library `moonpool.forkjoin`
provides the fork-join parallelism primitives
to use within tasks running in the pool.
## Usage
@ -166,7 +167,8 @@ val expected_sum : int = 5050
### Fork-join
On OCaml 5, again using effect handlers, the module `Fork_join`
On OCaml 5, again using effect handlers, the sublibrary `moonpool.forkjoin`
provides a module `Moonpool_forkjoin`
implements the [fork-join model](https://en.wikipedia.org/wiki/Fork%E2%80%93join_model).
It must run on a pool (using `Runner.run_async` or inside a future via `Fut.spawn`).
@ -220,7 +222,7 @@ And a parallel quicksort for larger slices:
done;
(* sort lower half and upper half in parallel *)
Moonpool.Fork_join.both_ignore
Moonpool_forkjoin.both_ignore
(fun () -> quicksort arr i (!low - i))
(fun () -> quicksort arr !low (len - (!low - i)))
);;

View file

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (moonpool.index)</title><meta charset="utf-8"/><link rel="stylesheet" href="../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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> moonpool</nav><header class="odoc-preamble"><h1 id="package-moonpool"><a href="#package-moonpool" class="anchor"></a>Package moonpool <nav><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">changes</a> <a href="#package_info">more…</a></nav></h1><ul class="modules"><li><a href="Moonpool/index.html"><code>Moonpool</code></a> <span class="synopsis">Moonpool</span></li></ul></header><nav class="odoc-toc"><ul><li><a href="#package_info">Package info</a></li></ul></nav><div class="odoc-content"><h2 id="package_info"><a href="#package_info" class="anchor"></a>Package info</h2><table class="package info"><tr id="info-changes-files"><td><a href="#info-changes-files" aria-hidden="true" class="anchor"></a>changes-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">CHANGES.md</a></li></ul></td></tr><tr id="info-readme-files"><td><a href="#info-readme-files" aria-hidden="true" class="anchor"></a>readme-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/README.md">README.md</a></li></ul></td></tr></table></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (moonpool.index)</title><meta charset="utf-8"/><link rel="stylesheet" href="../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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> moonpool</nav><header class="odoc-preamble"><h1 id="package-moonpool"><a href="#package-moonpool" class="anchor"></a>Package moonpool <nav><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">changes</a> <a href="#package_info">more…</a></nav></h1><ul class="modules"><li><a href="Moonpool/index.html"><code>Moonpool</code></a> <span class="synopsis">Moonpool</span></li><li><a href="Moonpool_fib/index.html"><code>Moonpool_fib</code></a> </li><li><a href="Moonpool_forkjoin/index.html"><code>Moonpool_forkjoin</code></a> <span class="synopsis">Fork-join primitives.</span></li><li><a href="Moonpool_private/index.html"><code>Moonpool_private</code></a> </li></ul></header><nav class="odoc-toc"><ul><li><a href="#package_info">Package info</a></li></ul></nav><div class="odoc-content"><h2 id="package_info"><a href="#package_info" class="anchor"></a>Package info</h2><table class="package info"><tr id="info-changes-files"><td><a href="#info-changes-files" aria-hidden="true" class="anchor"></a>changes-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">CHANGES.md</a></li></ul></td></tr><tr id="info-readme-files"><td><a href="#info-readme-files" aria-hidden="true" class="anchor"></a>readme-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/README.md">README.md</a></li></ul></td></tr></table></div></body></html>