这是我尝试tokio的代码:
use std::{thread, time};
async fn one() -> i64 {
let dur = time::Duration::from_secs(1);
thread::sleep(dur);
1
}
#[tokio::main(core_threads=3,max_threads=8)]
async fn main() {
let ins1 = std::time::Instant::now();
let a = one();
let b = one();
let (a, b) = futures::join!(a,b);
println!("a+b: {:?}", a + b);
let ins2 = std::time::Instant::now();
let dur = ins2 - ins1;
println!("time used: {:?}", dur);
}
我认为a
和b
应该在不同的线程中并行运行,因此输出应该是
a+b: 2
time used: 1.0s
但是我得到的是
a+b: 2
time used: 2.01022541s
我的代码在具有6Core i7 CPU的macOS Catalina上运行。