【发布时间】:2020-05-01 05:35:25
【问题描述】:
我是 rust 新手,第一次在 rust 中尝试异步。在此示例中,我正在使用 async-std 运行递归斐波那契系列的 cpu 密集型运算,无论我运行单个任务还是两个任务,它所花费的时间大致相同(约 7 秒)。
看起来异步运行时正在多个线程上执行任务。
有没有办法强制异步任务在同一个线程上运行?
use std::time;
use async_std::task;
fn main() {
let start = time::Instant::now();
let s1 = task::spawn(fib_async(46));
let s2 = task::spawn(fib_async(46));
task::block_on(s1);
task::block_on(s2);
let elap = time::Instant::now().duration_since(start);
println!("time took for tasks to finish: {} seconds", elap.as_secs());
}
async fn fib_async(n: i32) -> i32 {
fib(n)
}
fn fib(n: i32) -> i32 {
if n == 0 || n == 1 {
1
} else {
fib(n-1) + fib(n-2)
}
}
【问题讨论】:
标签: rust