#async-io #executor #async-global-executor

async-global-executor

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

35 releases (stable)

3.1.0 Feb 26, 2025
2.4.1 Dec 11, 2023
2.4.0 Nov 23, 2023
2.3.1 Oct 28, 2022
0.2.3 Aug 28, 2020

#101 in Asynchronous

Download history 498990/week @ 2025-01-10 433164/week @ 2025-01-17 459213/week @ 2025-01-24 503738/week @ 2025-01-31 535649/week @ 2025-02-07 507464/week @ 2025-02-14 565583/week @ 2025-02-21 557861/week @ 2025-02-28 610274/week @ 2025-03-07 583710/week @ 2025-03-14 571883/week @ 2025-03-21 584220/week @ 2025-03-28 605215/week @ 2025-04-04 679279/week @ 2025-04-11 561028/week @ 2025-04-18 553846/week @ 2025-04-25

2,509,663 downloads per month
Used in 2,997 crates (57 directly)

Apache-2.0 OR MIT

21KB
271 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.
  • 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.

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

~4–13MB
~179K SLoC