MST

星途 面试题库

面试题:Rust中Thread类型的基础使用

在Rust中,如何创建一个新的线程并等待其执行完成?请写出具体代码示例,并解释`join`方法在这里的作用。
16.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::thread;

fn main() {
    let handle = thread::spawn(|| {
        println!("新线程正在执行");
    });

    handle.join().unwrap();
    println!("新线程已执行完成");
}

join方法的作用:在上述代码中,handle.join()会阻塞当前线程(即主线程),直到由thread::spawn创建的新线程执行完毕。join方法返回一个Result,如果新线程执行过程中没有发生恐慌(panic),join会返回新线程的返回值(这里新线程没有返回值),如果新线程发生恐慌,join会返回Errunwrap方法则是在ResultOk时直接取出值,在ResultErr时会使当前线程恐慌。所以join方法确保了主线程等待新线程完成,从而实现线程同步。