200 lines
No EOL
17 KiB
HTML
200 lines
No EOL
17 KiB
HTML
<!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">☰</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'>−</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>() -> <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><F>(&self, future: F) <span class="where fmt-newline">where<br> F: <a class="trait" href="../../../tokio/prelude/future/trait.Future.html" title="trait tokio::prelude::future::Future">Future</a><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>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static, </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">"called from a worker thread"</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>(&self) -> &<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>(&mut self) -> &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) -> <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) -> <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) -> <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>(&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>(&self, __arg_0: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<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>></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>⏎</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> |