zoukankan      html  css  js  c++  java
  • Asynchronous Programming in Rust

    根据   Asynchronous Programming in Rust  (https://rust-lang.github.io/async-book/01_getting_started/04_async_await_primer.html)

    整理的代码:

    use futures::executor::block_on;
    struct  Song();
    async fn learn_song() -> Song { println!("learn_song");Song{}}
    async fn sing_song(_song: Song) { println!("sing_song")}
    async fn dance() { println!("dance") }
    
    async fn learn_and_sing() {
        // Wait until the song has been learned before singing it.
        // We use `.await` here rather than `block_on` to prevent blocking the
        // thread, which makes it possible to `dance` at the same time.
        let song = learn_song().await;
        sing_song(song).await;
    }
    
    async fn async_main() {
        let f1 = learn_and_sing();
        let f2 = dance();
    
        // `join!` is like `.await` but can wait for multiple futures concurrently.
        // If we're temporarily blocked in the `learn_and_sing` future, the `dance`
        // future will take over the current thread. If `dance` becomes blocked,
        // `learn_and_sing` can take back over. If both futures are blocked, then
        // `async_main` is blocked and will yield to the executor.
        futures::join!(f1, f2);
    }
    
    
    fn main() {
        block_on(async_main());
    }
  • 相关阅读:
    自定义checkbox样式
    自定义select样式
    jsonp
    I/O复用 poll简介
    DOS和DDOS攻击
    TCP状态转换图解析
    Makefile入门
    I/O复用select 使用简介
    替换文本内容
    share memory
  • 原文地址:https://www.cnblogs.com/pu369/p/15262542.html
Copyright © 2011-2022 走看看