#async #await #future #executor

async-global-executor

A global executor built on top of async-executor and async-io

23 releases (14 stable)

2.0.2 Jan 11, 2021
2.0.1 Dec 23, 2020
1.4.3 Oct 28, 2020
1.3.0 Sep 28, 2020
0.1.4 Aug 27, 2020

#303 in Asynchronous

Download history 48966/week @ 2021-04-04 47358/week @ 2021-04-11 48910/week @ 2021-04-18 50612/week @ 2021-04-25 50370/week @ 2021-05-02 54579/week @ 2021-05-09 52881/week @ 2021-05-16 50228/week @ 2021-05-23 52300/week @ 2021-05-30 57836/week @ 2021-06-06 58540/week @ 2021-06-13 59297/week @ 2021-06-20 53108/week @ 2021-06-27 64567/week @ 2021-07-04 64657/week @ 2021-07-11 66665/week @ 2021-07-18

214,521 downloads per month
Used in 1,158 crates (26 directly)

Apache-2.0 OR MIT

23KB
352 lines

async-global-executor

API Docs Build status Downloads

A global executor built on top of async-executor and async-io

Features

  • async-io: if enabled, async-global-executor will use async_io::block_on instead of futures_lite::future::block_on internally. this is preferred if your application also uses async-io.
  • blocking: enable the use of the blocking crate through async_global_executor::spawn_blocking.
  • tokio: if enabled, async-global-executor will ensure that all tasks that you will spawn run in the context of a tokio 1.0 runtime, spawning a new one if required.
  • tokio03: if enabled, async-global-executor will ensure that all tasks that you will spawn run in the context of a tokio 0.3 runtime, spawning a new one if required.
  • tokio02: if enabled, async-global-executor will ensure that all tasks that you will spawn run in the context of a tokio 0.2 runtime, spawning a new one if required.

Examples

# use futures_lite::future;

// spawn a task on the multi-threaded executor
let task1 = async_global_executor::spawn(async {
    1 + 2
});
// spawn a task on the local executor (same thread)
let task2 = async_global_executor::spawn_local(async {
    3 + 4
});
let task = future::zip(task1, task2);

// run the executor
async_global_executor::block_on(async {
    assert_eq!(task.await, (3, 7));
});

License

Licensed under either of

at your option.

Contribution

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.

Dependencies

~1MB
~19K SLoC