在Rust中,处理并发任务通常使用异步编程和线程池。这里有一个简单的例子,展示了如何使用Tokio库来处理并发任务:
Cargo.toml
文件中添加了Tokio库作为依赖:[dependencies]
tokio = { version = "1", features = ["full"] }
main.rs
的文件,并编写以下代码:use tokio::task;
use std::time::Duration;
#[tokio::main]
async fn main() {
// 创建一个任务列表
let tasks = vec![
task::spawn(async {
println!("Task 1 started");
task::sleep(Duration::from_secs(2)).await;
println!("Task 1 finished");
}),
task::spawn(async {
println!("Task 2 started");
task::sleep(Duration::from_secs(1)).await;
println!("Task 2 finished");
}),
task::spawn(async {
println!("Task 3 started");
task::sleep(Duration::from_secs(3)).await;
println!("Task 3 finished");
}),
];
// 等待所有任务完成
for task in tasks {
task.await.unwrap();
}
println!("All tasks completed");
}
在这个例子中,我们使用tokio::task::spawn
函数创建了一个并发任务列表。每个任务都是一个异步函数,它们可以并行执行。我们使用task::sleep
函数模拟任务执行时间。最后,我们使用for
循环等待所有任务完成。
当你运行这个程序时,你会看到以下输出:
Task 1 started
Task 2 started
Task 3 started
Task 2 finished
Task 1 finished
Task 3 finished
All tasks completed
这表明任务是并发执行的。注意,任务的完成顺序可能会有所不同,因为它们是并行执行的。