繁体   English   中英

为什么我们需要等待?

[英]Why do we need to await?

以下代码取自 tokio crate教程

use tokio::io::{self, AsyncWriteExt};
use tokio::fs::File;

#[tokio::main]
async fn main() -> io::Result<()> {
    let mut file = File::create("foo.txt").await?;

    // Writes some prefix of the byte string, but not necessarily all of it.
    let n = file.write(b"some bytes").await?;

    println!("Wrote the first {} bytes of 'some bytes'.", n);
    Ok(())
}

为什么我们在创建文件时需要.await

let mut file = File::create("foo.txt").await?;

换句话说,为什么我们需要异步创建文件? 毕竟,如果文件尚未创建,我们就无法写入文件,因此只需阻止创建就足够了。 如果它创建成功,则异步写入它,否则简单地返回一个错误。 我肯定想念一些东西。

更新:请不要试图详细解释什么是异步编程,或者.await是做什么的。 我非常了解这些话题。 我的问题是:这个异步创建文件的例子的原因是什么?

在这个简单的例子中没有实际的理由使用.await 有人可能会争辩说这是一个糟糕的例子,因为它没有显示出比普通同步编程有任何性能改进。 但是,异步的实际示例通常更复杂,此示例的目的是介绍基本语法。

使用文件系统是一项异步任务。 您正在请求从独立于您的程序工作的操作系统中写入或读取。 您的程序可以在加载文件时执行其他操作。 Await 基本上告诉你的程序停止执行这个函数,直到请求的数据准备好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM