mentat/tokio/executor/thread_pool/struct.ThreadPool.html
2018-08-22 17:04:13 +00:00

200 lines
No EOL
17 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 `tokio`.">
<meta name="keywords" content="rust, rustlang, rust-lang, ThreadPool">
<title>tokio::executor::thread_pool::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="../../../main.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.spawn">spawn</a><a href="#method.sender">sender</a><a href="#method.sender_mut">sender_mut</a><a href="#method.shutdown_on_idle">shutdown_on_idle</a><a href="#method.shutdown">shutdown</a><a href="#method.shutdown_now">shutdown_now</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Drop">Drop</a><a href="#impl-Debug">Debug</a></div></div><p class='location'><a href='../../index.html'>tokio</a>::<wbr><a href='../index.html'>executor</a>::<wbr><a href='index.html'>thread_pool</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">
</div>
</form>
</nav>
<section id='main' class="content">
<h1 class='fqn'><span class='in-band'>Struct <a href='../../index.html'>tokio</a>::<wbr><a href='../index.html'>executor</a>::<wbr><a href='index.html'>thread_pool</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/tokio_threadpool/thread_pool.rs.html#16-18' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct ThreadPool { /* fields omitted */ }</pre><div class='docblock'><p>Work-stealing based thread pool for executing futures.</p>
<p>If a <code>ThreadPool</code> instance is dropped without explicitly being shutdown,
<code>shutdown_now</code> is called implicitly, forcing all tasks that have not yet
completed to be dropped.</p>
<p>Create <code>ThreadPool</code> instances using <code>Builder</code>.</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'><code>impl <a class="struct" href="../../../tokio/executor/thread_pool/struct.ThreadPool.html" title="struct tokio::executor::thread_pool::ThreadPool">ThreadPool</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#20-124' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><code>pub fn <a href='#method.new' class='fnname'>new</a>() -&gt; <a class="struct" href="../../../tokio/executor/thread_pool/struct.ThreadPool.html" title="struct tokio::executor::thread_pool::ThreadPool">ThreadPool</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#26-28' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Create a new <code>ThreadPool</code> with default values.</p>
<p>Use <a href="struct.Builder.html"><code>Builder</code></a> for creating a configured thread pool.</p>
</div><h4 id='method.spawn' class="method"><span id='spawn.v' class='invisible'><code>pub fn <a href='#method.spawn' class='fnname'>spawn</a>&lt;F&gt;(&amp;self, future: F) <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="../../../tokio/prelude/future/trait.Future.html" title="trait tokio::prelude::future::Future">Future</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, Error = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt; + <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><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#61-65' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Spawn a future onto the thread pool.</p>
<p>This function takes ownership of the future and randomly assigns it to a
worker thread. The thread will then start executing the future.</p>
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
<pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">futures</span>::<span class="ident">future</span>::{<span class="ident">Future</span>, <span class="ident">lazy</span>};
<span class="comment">// Create a thread pool with default configuration values</span>
<span class="kw">let</span> <span class="ident">thread_pool</span> <span class="op">=</span> <span class="ident">ThreadPool</span>::<span class="ident">new</span>();
<span class="ident">thread_pool</span>.<span class="ident">spawn</span>(<span class="ident">lazy</span>(<span class="op">||</span> {
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;called from a worker thread&quot;</span>);
<span class="prelude-val">Ok</span>(())
}));
<span class="comment">// Gracefully shutdown the threadpool</span>
<span class="ident">thread_pool</span>.<span class="ident">shutdown</span>().<span class="ident">wait</span>().<span class="ident">unwrap</span>();</pre>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<p>This function panics if the spawn fails. Use [<code>Sender::spawn</code>] for a
version that returns a <code>Result</code> instead of panicking.</p>
</div><h4 id='method.sender' class="method"><span id='sender.v' class='invisible'><code>pub fn <a href='#method.sender' class='fnname'>sender</a>(&amp;self) -&gt; &amp;<a class="struct" href="../../../tokio/executor/thread_pool/struct.Sender.html" title="struct tokio::executor::thread_pool::Sender">Sender</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#71-73' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Return a reference to the sender handle</p>
<p>The handle is used to spawn futures onto the thread pool. It also
implements the <code>Executor</code> trait.</p>
</div><h4 id='method.sender_mut' class="method"><span id='sender_mut.v' class='invisible'><code>pub fn <a href='#method.sender_mut' class='fnname'>sender_mut</a>(&amp;mut self) -&gt; &amp;mut <a class="struct" href="../../../tokio/executor/thread_pool/struct.Sender.html" title="struct tokio::executor::thread_pool::Sender">Sender</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#76-78' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Return a mutable reference to the sender handle</p>
</div><h4 id='method.shutdown_on_idle' class="method"><span id='shutdown_on_idle.v' class='invisible'><code>pub fn <a href='#method.shutdown_on_idle' class='fnname'>shutdown_on_idle</a>(self) -&gt; <a class="struct" href="../../../tokio/executor/thread_pool/struct.Shutdown.html" title="struct tokio::executor::thread_pool::Shutdown">Shutdown</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#90-93' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Shutdown the pool once it becomes idle.</p>
<p>Idle is defined as the completion of all futures that have been spawned
onto the thread pool. There may still be outstanding handles when the
thread pool reaches an idle state.</p>
<p>Once the idle state is reached, calling <code>spawn</code> on any outstanding
handle will result in an error. All worker threads are signaled and will
shutdown. The returned future completes once all worker threads have
completed the shutdown process.</p>
</div><h4 id='method.shutdown' class="method"><span id='shutdown.v' class='invisible'><code>pub fn <a href='#method.shutdown' class='fnname'>shutdown</a>(self) -&gt; <a class="struct" href="../../../tokio/executor/thread_pool/struct.Shutdown.html" title="struct tokio::executor::thread_pool::Shutdown">Shutdown</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#103-106' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Shutdown the pool</p>
<p>This prevents the thread pool from accepting new tasks but will allow
any existing tasks to complete.</p>
<p>Calling <code>spawn</code> on any outstanding handle will result in an error. All
worker threads are signaled and will shutdown. The returned future
completes once all worker threads have completed the shutdown process.</p>
</div><h4 id='method.shutdown_now' class="method"><span id='shutdown_now.v' class='invisible'><code>pub fn <a href='#method.shutdown_now' class='fnname'>shutdown_now</a>(self) -&gt; <a class="struct" href="../../../tokio/executor/thread_pool/struct.Shutdown.html" title="struct tokio::executor::thread_pool::Shutdown">Shutdown</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#116-119' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Shutdown the pool immediately</p>
<p>This will prevent the thread pool from accepting new tasks <strong>and</strong>
abort any tasks that are currently running on the thread pool.</p>
<p>Calling <code>spawn</code> on any outstanding handle will result in an error. All
worker threads are signaled and will shutdown. The returned future
completes once all worker threads have completed the shutdown process.</p>
</div></div>
<h2 id='implementations' class='small-section-header'>
Trait Implementations<a href='#implementations' class='anchor'></a>
</h2>
<h3 id='impl-Drop' class='impl'><span class='in-band'><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="../../../tokio/executor/thread_pool/struct.ThreadPool.html" title="struct tokio::executor::thread_pool::ThreadPool">ThreadPool</a></code><a href='#impl-Drop' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#126-134' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.drop' class="method"><span id='drop.v' class='invisible'><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><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#127-133' title='goto source code'>[src]</a></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><h3 id='impl-Debug' class='impl'><span class='in-band'><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="../../../tokio/executor/thread_pool/struct.ThreadPool.html" title="struct tokio::executor::thread_pool::ThreadPool">ThreadPool</a></code><a href='#impl-Debug' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#15' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.fmt' class="method"><span id='fmt.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&amp;self, __arg_0: &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><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/tokio_threadpool/thread_pool.rs.html#15' title='goto source code'>[src]</a></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></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>
</div>
</div>
</aside>
<script>
window.rootPath = "../../../";
window.currentCrate = "tokio";
</script>
<script src="../../../main.js"></script>
<script defer src="../../../search-index.js"></script>
</body>
</html>