#async-foundations #futures #executor

futures-executor

Executors for asynchronous tasks based on the futures-rs library

24 releases

0.3.21 Feb 6, 2022
0.3.19 Dec 18, 2021
0.3.18 Nov 23, 2021
0.3.16 Jul 23, 2021
0.2.0-beta Mar 20, 2018

#59 in Asynchronous

Download history 466568/week @ 2022-03-11 472073/week @ 2022-03-18 493034/week @ 2022-03-25 494764/week @ 2022-04-01 517708/week @ 2022-04-08 480780/week @ 2022-04-15 509327/week @ 2022-04-22 480097/week @ 2022-04-29 508489/week @ 2022-05-06 472357/week @ 2022-05-13 483082/week @ 2022-05-20 437936/week @ 2022-05-27 523058/week @ 2022-06-03 512210/week @ 2022-06-10 532972/week @ 2022-06-17 453116/week @ 2022-06-24

2,104,177 downloads per month
Used in 1,891 crates (122 directly)

MIT/Apache

705KB
14K SLoC

futures-executor

Executors for asynchronous tasks based on the futures-rs library.

Usage

Add this to your Cargo.toml:

[dependencies]
futures-executor = "0.3"

The current futures-executor requires Rust 1.45 or later.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

Built-in executors and related tools.

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.

All items are only available when the std feature of this library is activated, and it is activated by default.

Using a thread pool (M:N task scheduling)

Most of the time tasks should be executed on a thread pool. 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 spawn_ok function will run ambiently on the created threads.

Spawning additional tasks

Tasks can be spawned onto a spawner by calling its spawn_obj method directly. In the case of !Send futures, spawn_local_obj can be used instead.

Single-threaded execution

In addition to thread pools, it's possible to run a task (and the tasks it spawns) entirely within a single thread via the [LocalPool] executor. Aside from cutting down on synchronization costs, this executor also makes it possible to spawn non-Send tasks, via spawn_local_obj. The [LocalPool] is best suited for running I/O-bound tasks that do relatively little work between I/O operations.

There is also a convenience function [block_on] for simply running a future to completion on the current thread.

Dependencies