MST

星途 面试题库

面试题:Rust中线程停放机制的基本原理

请简要阐述Rust线程停放机制的基本原理,包括涉及到的主要结构体和方法。
14.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

基本原理

Rust 的线程停放机制允许线程暂停执行并在稍后恢复,这在需要控制线程执行流程,如减少不必要的 CPU 占用等场景中很有用。其核心基于 parkunpark 操作,park 使线程进入等待状态,unpark 则唤醒等待的线程。

主要结构体

  1. thread::parking_lot::Parker 这是线程停放机制中的关键结构体,它负责管理线程的停放和唤醒。Parker 内部维护了一个状态,用于跟踪线程是否已被 unpark

主要方法

  1. park
    • 定义在 Parker 结构体上,调用 park 方法会使当前线程进入等待状态,暂停执行。线程会等待被 unpark 操作唤醒。
    • 例如:
use std::thread::parking_lot::Parker;
let parker = Parker::new();
parker.park();
  1. unpark
    • 同样定义在 Parker 结构体上,调用 unpark 方法会唤醒之前通过 park 进入等待状态的线程。如果线程还未 parkunpark 操作会使 Parker 记录下这个 “唤醒信号”,当线程随后调用 park 时,它会立即被唤醒,而不会真正进入等待状态。
    • 例如:
use std::thread::parking_lot::Parker;
let parker = Parker::new();
parker.unpark();
parker.park(); // 此调用不会使线程进入等待,因为之前已 unpark