如果线程持续了一定时间,是否有办法杀死它?

时间:2019-07-22 21:47:14

标签: multithreading rust

我需要为std::thread设置运行时限,并在超过最大运行时间时终止线程。

我知道我可以使用Duration模块中提供的Instantstd::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持续了一定时间,是否有一种优雅的方法可以杀死线程?

0 个答案:

没有答案