rusty_snek_gaem/target/doc/rayon/struct.ThreadPool.html
2018-10-28 21:14:05 -05:00

92 lines
25 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ThreadPool` struct in crate `rayon`."><meta name="keywords" content="rust, rustlang, rust-lang, ThreadPool"><title>rayon::ThreadPool - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script></head><body class="rustdoc struct"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><p class='location'>Struct ThreadPool</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.new">new</a><a href="#method.install">install</a><a href="#method.current_num_threads">current_num_threads</a><a href="#method.current_thread_index">current_thread_index</a><a href="#method.current_thread_has_pending_tasks">current_thread_has_pending_tasks</a><a href="#method.join">join</a><a href="#method.scope">scope</a><a href="#method.spawn">spawn</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-Drop">Drop</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a></div></div><p class='location'><a href='index.html'>rayon</a></p><script>window.sidebarCurrent = {name: 'ThreadPool', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><input class="search-input" name="search" autocomplete="off" placeholder="Click or press S to search, ? for more options…" type="search"><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>rayon</a>::<wbr><a class="struct" href=''>ThreadPool</a></span><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#51-53' title='goto source code'>[src]</a></span></h1><div class="docblock type-decl"><pre class='rust struct'>pub struct ThreadPool { /* fields omitted */ }</pre></div><div class='docblock'><p>Represents a user created <a href="https://en.wikipedia.org/wiki/Thread_pool">thread-pool</a>.</p>
<p>Use a <a href="struct.ThreadPoolBuilder.html"><code>ThreadPoolBuilder</code></a> to specify the number and/or names of threads
in the pool. After calling <a href="struct.ThreadPoolBuilder.html#method.build"><code>ThreadPoolBuilder::build()</code></a>, you can then
execute functions explicitly within this <a href="struct.ThreadPool.html"><code>ThreadPool</code></a> using
<a href="struct.ThreadPool.html#method.install"><code>ThreadPool::install()</code></a>. By contrast, top level rayon functions
(like <code>join()</code>) will execute implicitly within the current thread-pool.</p>
<h2 id="creating-a-threadpool" class="section-header"><a href="#creating-a-threadpool">Creating a ThreadPool</a></h2>
<pre class="rust rust-example-rendered">
<span class="kw">let</span> <span class="ident">pool</span> <span class="op">=</span> <span class="ident">rayon</span>::<span class="ident">ThreadPoolBuilder</span>::<span class="ident">new</span>().<span class="ident">num_threads</span>(<span class="number">8</span>).<span class="ident">build</span>().<span class="ident">unwrap</span>();</pre>
<p><a href="struct.ThreadPool.html#method.install"><code>install()</code></a> executes a closure in one of the <code>ThreadPool</code>'s
threads. In addition, any other rayon operations called inside of <code>install()</code> will also
execute in the context of the <code>ThreadPool</code>.</p>
<p>When the <code>ThreadPool</code> is dropped, that's a signal for the threads it manages to terminate,
they will complete executing any remaining work that you have spawned, and automatically
terminate.</p>
</div><h2 id='methods' class='small-section-header'>Methods<a href='#methods' class='anchor'></a></h2><h3 id='impl' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl <a class="struct" href="../rayon/struct.ThreadPool.html" title="struct rayon::ThreadPool">ThreadPool</a></code><a href='#impl' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#60-250' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.new' class='fnname'>new</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;configuration: <a class="struct" href="../rayon_core/struct.Configuration.html" title="struct rayon_core::Configuration">Configuration</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../rayon/struct.ThreadPool.html" title="struct rayon::ThreadPool">ThreadPool</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;<a class="trait" href="https://doc.rust-lang.org/nightly/std/error/trait.Error.html" title="trait std::error::Error">Error</a> + 'static&gt;&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#64-66' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='stability'><div class='stab deprecated'>Deprecated<p>: Use <code>ThreadPoolBuilder::build</code></p>
</div></div><div class='docblock'><p>Deprecated in favor of <code>ThreadPoolBuilder::build</code>.</p>
</div><h4 id='method.install' class="method"><span id='install.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.install' class='fnname'>install</a>&lt;OP, R&gt;(&amp;self, op: OP) -&gt; R <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;OP: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; R + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#120-125' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Executes <code>op</code> within the threadpool. Any attempts to use
<code>join</code>, <code>scope</code>, or parallel iterators will then operate
within that threadpool.</p>
<h1 id="warning-thread-local-data" class="section-header"><a href="#warning-thread-local-data">Warning: thread-local data</a></h1>
<p>Because <code>op</code> is executing within the Rayon thread-pool,
thread-local data from the current thread will not be
accessible.</p>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<p>If <code>op</code> should panic, that panic will be propagated.</p>
<h2 id="using-install" class="section-header"><a href="#using-install">Using <code>install()</code></a></h2>
<pre class="rust rust-example-rendered">
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">pool</span> <span class="op">=</span> <span class="ident">rayon</span>::<span class="ident">ThreadPoolBuilder</span>::<span class="ident">new</span>().<span class="ident">num_threads</span>(<span class="number">8</span>).<span class="ident">build</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">n</span> <span class="op">=</span> <span class="ident">pool</span>.<span class="ident">install</span>(<span class="op">||</span> <span class="ident">fib</span>(<span class="number">20</span>));
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">n</span>);
}
<span class="kw">fn</span> <span class="ident">fib</span>(<span class="ident">n</span>: <span class="ident">usize</span>) <span class="op">-&gt;</span> <span class="ident">usize</span> {
<span class="kw">if</span> <span class="ident">n</span> <span class="op">==</span> <span class="number">0</span> <span class="op">||</span> <span class="ident">n</span> <span class="op">==</span> <span class="number">1</span> {
<span class="kw">return</span> <span class="ident">n</span>;
}
<span class="kw">let</span> (<span class="ident">a</span>, <span class="ident">b</span>) <span class="op">=</span> <span class="ident">rayon</span>::<span class="ident">join</span>(<span class="op">||</span> <span class="ident">fib</span>(<span class="ident">n</span> <span class="op">-</span> <span class="number">1</span>), <span class="op">||</span> <span class="ident">fib</span>(<span class="ident">n</span> <span class="op">-</span> <span class="number">2</span>)); <span class="comment">// runs inside of `pool`</span>
<span class="kw">return</span> <span class="ident">a</span> <span class="op">+</span> <span class="ident">b</span>;
}</pre>
</div><h4 id='method.current_num_threads' class="method"><span id='current_num_threads.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.current_num_threads' class='fnname'>current_num_threads</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#139-141' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Returns the (current) number of threads in the thread pool.</p>
<h1 id="future-compatibility-note" class="section-header"><a href="#future-compatibility-note">Future compatibility note</a></h1>
<p>Note that unless this thread-pool was created with a
<a href="struct.ThreadPoolBuilder.html"><code>ThreadPoolBuilder</code></a> that specifies the number of threads,
then this number may vary over time in future versions (see <a href="struct.ThreadPoolBuilder.html#method.num_threads">the
<code>num_threads()</code> method for details</a>).</p>
</div><h4 id='method.current_thread_index' class="method"><span id='current_thread_index.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.current_thread_index' class='fnname'>current_thread_index</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#164-175' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>If called from a Rayon worker thread in this thread-pool,
returns the index of that thread; if not called from a Rayon
thread, or called from a Rayon thread that belongs to a
different thread-pool, returns <code>None</code>.</p>
<p>The index for a given thread will not change over the thread's
lifetime. However, multiple threads may share the same index if
they are in distinct thread-pools.</p>
<h1 id="future-compatibility-note-1" class="section-header"><a href="#future-compatibility-note-1">Future compatibility note</a></h1>
<p>Currently, every thread-pool (including the global
thread-pool) has a fixed number of threads, but this may
change in future Rayon versions (see <a href="struct.ThreadPoolBuilder.html#method.num_threads">the <code>num_threads()</code> method
for details</a>). In that case, the index for a
thread would not change during its lifetime, but thread
indices may wind up being reused if threads are terminated and
restarted.</p>
</div><h4 id='method.current_thread_has_pending_tasks' class="method"><span id='current_thread_has_pending_tasks.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.current_thread_has_pending_tasks' class='fnname'>current_thread_has_pending_tasks</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#199-210' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Returns true if the current worker thread currently has &quot;local
tasks&quot; pending. This can be useful as part of a heuristic for
deciding whether to spawn a new task or execute code on the
current thread, particularly in breadth-first
schedulers. However, keep in mind that this is an inherently
racy check, as other worker threads may be actively &quot;stealing&quot;
tasks from our local deque.</p>
<p><strong>Background:</strong> Rayon's uses a <a href="https://en.wikipedia.org/wiki/Work_stealing">work-stealing</a> scheduler. The
key idea is that each thread has its own <a href="https://en.wikipedia.org/wiki/Double-ended_queue">deque</a> of
tasks. Whenever a new task is spawned -- whether through
<code>join()</code>, <code>Scope::spawn()</code>, or some other means -- that new
task is pushed onto the thread's <em>local</em> deque. Worker threads
have a preference for executing their own tasks; if however
they run out of tasks, they will go try to &quot;steal&quot; tasks from
other threads. This function therefore has an inherent race
with other active worker threads, which may be removing items
from the local deque.</p>
</div><h4 id='method.join' class="method"><span id='join.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.join' class='fnname'>join</a>&lt;A, B, RA, RB&gt;(&amp;self, oper_a: A, oper_b: B) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a>RA, RB<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a> <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; RA + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; RB + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;RA: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;RB: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#215-222' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Execute <code>oper_a</code> and <code>oper_b</code> in the thread-pool and return
the results. Equivalent to <code>self.install(|| join(oper_a, oper_b))</code>.</p>
</div><h4 id='method.scope' class="method"><span id='scope.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.scope' class='fnname'>scope</a>&lt;'scope, OP, R&gt;(&amp;self, op: OP) -&gt; R <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;OP: for&lt;'s&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;'s <a class="struct" href="../rayon/struct.Scope.html" title="struct rayon::Scope">Scope</a>&lt;'scope&gt;) -&gt; R + 'scope + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#230-234' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Creates a scope that executes within this thread-pool.
Equivalent to <code>self.install(|| scope(...))</code>.</p>
<p>See also: <a href="fn.scope.html">the <code>scope()</code> function</a>.</p>
</div><h4 id='method.spawn' class="method"><span id='spawn.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.spawn' class='fnname'>spawn</a>&lt;OP&gt;(&amp;self, op: OP) <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;OP: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#244-249' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Spawns an asynchronous task in this thread-pool. This task will
run in the implicit, global scope, which means that it may outlast
the current stack frame -- therefore, it cannot capture any references
onto the stack (you will likely need a <code>move</code> closure).</p>
<p>See also: <a href="struct.Scope.html#method.spawn">the <code>spawn()</code> function defined on scopes</a>.</p>
</div></div><h2 id='implementations' class='small-section-header'>Trait Implementations<a href='#implementations' class='anchor'></a></h2><div id='implementations-list'><h3 id='impl-Debug' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="../rayon/struct.ThreadPool.html" title="struct rayon::ThreadPool">ThreadPool</a></code><a href='#impl-Debug' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#258-265' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.fmt' class="method"><span id='fmt.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&amp;self, fmt: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#259-264' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
</div></div><h3 id='impl-Drop' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html" title="trait core::ops::drop::Drop">Drop</a> for <a class="struct" href="../rayon/struct.ThreadPool.html" title="struct rayon::ThreadPool">ThreadPool</a></code><a href='#impl-Drop' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#252-256' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.drop' class="method"><span id='drop.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop' class='fnname'>drop</a>(&amp;mut self)</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/rayon_core/thread_pool/mod.rs.html#253-255' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Executes the destructor for this type. <a href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop">Read more</a></p>
</div></div></div><h2 id='synthetic-implementations' class='small-section-header'>Auto Trait Implementations<a href='#synthetic-implementations' class='anchor'></a></h2><div id='synthetic-implementations-list'><h3 id='impl-Send' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="../rayon/struct.ThreadPool.html" title="struct rayon::ThreadPool">ThreadPool</a></code><a href='#impl-Send' class='anchor'></a></span></td><td><span class='out-of-band'></span></td></tr></tbody></table></h3><div class='impl-items'></div><h3 id='impl-Sync' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="../rayon/struct.ThreadPool.html" title="struct rayon::ThreadPool">ThreadPool</a></code><a href='#impl-Sync' class='anchor'></a></span></td><td><span class='out-of-band'></span></td></tr></tbody></table></h3><div class='impl-items'></div></div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g. <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g. <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g. <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "rayon";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>