为什么我们需要等待?



下面这段代码摘自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。有人可能会认为这是一个糟糕的示例,因为它没有显示出比普通同步编程有任何性能改进。然而,async的实际示例通常更复杂,本示例的目的是介绍基本语法。

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

相关内容

最新更新