#run-time #async #runner #io #async-io #tasks #timer

无std microasync-rt

极小异步运行时的运行时

2个版本

0.2.1 2023年1月12日
0.2.0 2023年1月11日

#1960 in 嵌入式开发

MIT许可证

20KB
484

microasync-runtime

MicroAsync (GitHub) 功能不多,没有IO支持,没有合适的运行时。MicroAsync-Runtime提供了这些功能

  • 一个小型运行时,具有添加任务的能力(支持no_std
  • 一个小型计时器
  • 文件、TCP和UDP的异步IO

队列运行时

队列运行时是一个运行时期间可以添加更多任务的非常小的异步运行时。新任务必须在它上面已经运行的任务中添加,或者在其被await之前添加!

use microasync::sync;
use microasync_rt::{QueuedRuntime, wait_ms};

fn main() {
    let mut runtime = QueuedRuntime::new();
    for _ in 0..50 {
        runtime.push(print_something_after_ms(2000));
    }
    sync(runtime);
}

async fn print_something_after_ms(ms: u64) {
    wait_ms(ms).await;
    println!("something! :D");
}
use microasync::sync;
use microasync_rt::{QueuedRuntime, wait_ms, get_current_runtime};

fn main() {
    sync(QueuedRuntime::new_with(print_something_after_ms(0)));
}

async fn print_something_after_ms(ms: u64) {
    wait_ms(ms).await;
    println!("something after {ms}ms! :D");
    get_current_runtime().await.push(print_something_after_ms(ms + 1));
}

示例

examples/中有许多示例 - 随意查看!

兼容性

MicroAsync-Runtime与async-core兼容。

依赖

~24KB