Files
google-apis-rs/futures_executor/index.html
2024-03-05 21:06:01 +01:00

31 lines
8.5 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="Built-in executors and related tools."><title>futures_executor - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="futures_executor" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../futures_executor/index.html">futures_executor</a><span class="version">0.3.28</span></h2></div><div class="sidebar-elems"><ul class="block">
<li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../futures_executor/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">futures_executor</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/futures_executor/lib.rs.html#1-76">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Built-in executors and related tools.</p>
<p>All asynchronous computation occurs within an executor, which is
capable of spawning futures as tasks. This module provides several
built-in executors, as well as tools for building your own.</p>
<p>All items are only available when the <code>std</code> feature of this
library is activated, and it is activated by default.</p>
<h2 id="using-a-thread-pool-mn-task-scheduling"><a href="#using-a-thread-pool-mn-task-scheduling">Using a thread pool (M:N task scheduling)</a></h2>
<p>Most of the time tasks should be executed on a <a href="ThreadPool">thread pool</a>.
A small set of worker threads can handle a very large set of spawned tasks
(which are much lighter weight than threads). Tasks spawned onto the pool
with the <a href="ThreadPool::spawn_ok"><code>spawn_ok</code></a> function will run ambiently on
the created threads.</p>
<h2 id="spawning-additional-tasks"><a href="#spawning-additional-tasks">Spawning additional tasks</a></h2>
<p>Tasks can be spawned onto a spawner by calling its <a href="https://docs.rs/futures/0.3/futures/task/trait.Spawn.html#tymethod.spawn_obj"><code>spawn_obj</code></a> method
directly. In the case of <code>!Send</code> futures, <a href="https://docs.rs/futures/0.3/futures/task/trait.LocalSpawn.html#tymethod.spawn_local_obj"><code>spawn_local_obj</code></a> can be used
instead.</p>
<h2 id="single-threaded-execution"><a href="#single-threaded-execution">Single-threaded execution</a></h2>
<p>In addition to thread pools, its possible to run a task (and the tasks
it spawns) entirely within a single thread via the <a href="struct.LocalPool.html" title="struct futures_executor::LocalPool"><code>LocalPool</code></a> executor.
Aside from cutting down on synchronization costs, this executor also makes
it possible to spawn non-<code>Send</code> tasks, via <a href="https://docs.rs/futures/0.3/futures/task/trait.LocalSpawn.html#tymethod.spawn_local_obj"><code>spawn_local_obj</code></a>. The
<a href="struct.LocalPool.html" title="struct futures_executor::LocalPool"><code>LocalPool</code></a> is best suited for running I/O-bound tasks that do relatively
little work between I/O operations.</p>
<p>There is also a convenience function <a href="fn.block_on.html" title="fn futures_executor::block_on"><code>block_on</code></a> for simply running a
future to completion on the current thread.</p>
</div></details><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.BlockingStream.html" title="struct futures_executor::BlockingStream">BlockingStream</a></div><div class="desc docblock-short">An iterator which blocks on values from a stream until they become available.</div></li><li><div class="item-name"><a class="struct" href="struct.Enter.html" title="struct futures_executor::Enter">Enter</a></div><div class="desc docblock-short">Represents an executor context.</div></li><li><div class="item-name"><a class="struct" href="struct.EnterError.html" title="struct futures_executor::EnterError">EnterError</a></div><div class="desc docblock-short">An error returned by <code>enter</code> if an execution scope has already been
entered.</div></li><li><div class="item-name"><a class="struct" href="struct.LocalPool.html" title="struct futures_executor::LocalPool">LocalPool</a></div><div class="desc docblock-short">A single-threaded task pool for polling futures to completion.</div></li><li><div class="item-name"><a class="struct" href="struct.LocalSpawner.html" title="struct futures_executor::LocalSpawner">LocalSpawner</a></div><div class="desc docblock-short">A handle to a <a href="struct.LocalPool.html" title="struct futures_executor::LocalPool"><code>LocalPool</code></a> that implements
<a href="../futures_task/spawn/trait.Spawn.html" title="trait futures_task::spawn::Spawn"><code>Spawn</code></a>.</div></li></ul><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.block_on.html" title="fn futures_executor::block_on">block_on</a></div><div class="desc docblock-short">Run a future to completion on the current thread.</div></li><li><div class="item-name"><a class="fn" href="fn.block_on_stream.html" title="fn futures_executor::block_on_stream">block_on_stream</a></div><div class="desc docblock-short">Turn a stream into a blocking iterator.</div></li><li><div class="item-name"><a class="fn" href="fn.enter.html" title="fn futures_executor::enter">enter</a></div><div class="desc docblock-short">Marks the current thread as being within the dynamic extent of an
executor.</div></li></ul></section></div></main></body></html>