JoinHandle — 스레드 종료를 기다리는 소유 핸들

JoinHandle — 스레드 종료를 기다리는 소유 핸들

JoinHandle는 스레드에 조인(join, 즉 종료를 기다리는 것)하기 위한 소유 권한이에요. 스레드를 차단하며 기다릴 수 있어요.

출처: Rust 공식 문서

본문

pub struct JoinHandle<T>(/* private fields */);

JoinHandle은 드롭될 때 관련 스레드를 분리(detach)해요. 즉 더 이상 그 스레드에 대한 핸들이 없게 되어 조인할 수 없게 돼요.

플랫폼 제약 때문에 이 핸들을 Clone할 수 없어요. T는 스레드 클로저가 반환하는 값의 타입이에요.

주요 메서드

// 스레드의 종료를 기다리고, 그 결과값을 반환해요.
pub fn join(self) -> Result<T, Box<dyn Any + Send + 'static>>

// 스레드의 종료를 기다리되 무한정 기다리지 않고,
// 일정 시간이 지나면 바로 반환해요.
pub fn is_finished(&self) -> bool

join은 스레드가 패닉하면 Err에 그 패닉 페이로드(Box<dyn Any>)를 담아 반환해요. 비동기 컨텍스트에서는 join이 블로킹하므로 피해야 해요.

더 알아보기 (Learn more)