我需要为std::thread
设置运行时限,并在超过最大运行时间时终止线程。
我知道我可以使用Duration
模块中提供的Instant
和std::time
结构来计算运行给定函数所花费的时间,例如以下所示功能:
use std::time::{Duration, Instant};
fn main() {
let start = Instant::now();
consume_some_time();
let duration = start.elapsed();
println!("Time elapsed in expensive_function() is: {:?}", duration);
}
我还知道可以使用std::thread
模块生成多个线程,例如以下函数:
use std::thread;
fn main() {
let builder = thread::Builder::new();
let handler = builder.spawn(|| {
consume_some_time();
}).unwrap();
consume_some_more_time();
handler.join().unwrap();
}
我需要做的是,如果持续时间小于给定值,则有条件地在循环中生成新线程。如果Rust持续了一定时间,是否有一种优雅的方法可以杀死线程?