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());
    }
  • 相关阅读:
    程序人生,编程思想
    CentOS Linux Jenkins安装、部署、更新
    Git常用命令
    U盘安装Mac OS X要点
    Shell执行*.sql
    WebStorm远程调试Node.js
    svn常用命令
    敏捷开发相关编辑思想(SOA、DDD、REST、CQRS)
    VisualVM远程监控Java
    centos搭建git服务
  • 原文地址:https://www.cnblogs.com/pu369/p/15262542.html
Copyright © 2011-2022 走看看