3个版本
0.1.2 | 2024年5月31日 |
---|---|
0.1.1 | 2024年5月31日 |
0.1.0 | 2024年5月31日 |
#358 in 异步
每月 8,121 次下载
用于 2 crates
8KB
166 行
异步调度器
此crate允许异步库以通用方式启动任务和设置定时器,而无需绑定到特定的异步运行时。
这种需求的核心理念来自于希望能够使用原生操作系统调度器,正如在Zed Decoded: Async Rust中所描述的。
库可以以通用方式spawn
use async_dispatcher::{spawn, sleep};
pub async my_library_function() {
let task = spawn(async {
sleep(Duration::from_secs(1)).await;
println!("in a spawned task!");
});
// ...
}
使用这些库的应用程序可以通过实现Dispatcher
特质来控制工作如何调度
use async_dispatcher::{set_dispatcher, Dispatcher, Runnable};
struct MyAppDispatcher;
impl Dispatcher for MyAppDispatcher {
fn dispatch(&self, runnable: Runnable) {
// ...
}
fn dispatch_after(&self, duration: Duration, runnable: Runnable) {
// ...
}
}
fn main() {
set_dispatcher(MyAppDispatcher);
async_dispatcher::block_on(async move {
my_library_function().await;
});
}
依赖项
~330–470KB