在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
这表明任务是并发执行的。注意,任务的完成顺序可能会有所不同,因为它们是并行执行的。