Rust

Concurrency Basics

Threads, thread::spawn, move closures, channels (mpsc), Send & Sync 트레이트, thread safety

20 면접 질문·
Mid-Level
1

Rust에서 새 스레드를 생성하려면 어떤 함수를 사용해야 하나요?

답변

std::thread 모듈의 thread::spawn 함수는 새로운 실행 스레드를 생성합니다. 클로저를 매개변수로 받고 join() 메서드로 스레드 종료를 기다릴 수 있는 JoinHandle을 반환합니다. 이 함수는 Rust에서 스레드 기반 동시성 프로그래밍의 주요 진입점입니다.

2

JoinHandle에서 호출한 join() 메서드는 무엇을 반환하나요?

답변

join() 메서드는 Result<T, E>를 반환하며, 여기서 T는 스레드 클로저의 반환 타입입니다. 스레드가 정상적으로 종료되면 Ok(값)을 얻습니다. 스레드가 패닉을 일으키면 패닉 정보를 담은 Err을 얻습니다. 이를 통해 스레드 결과를 안전하게 가져오거나 오류를 처리할 수 있습니다.

3

thread::spawn에 전달하는 클로저에 move 키워드를 사용하는 이유는 무엇인가요?

답변

move 키워드는 클로저가 캡처한 변수를 빌리는 대신 ownership을 가져가도록 강제합니다. 새 스레드가 변수가 정의된 스코프보다 오래 살 수 있기 때문에 thread::spawn에서는 필수적입니다. move가 없으면 컴파일러는 참조가 스레드의 전체 라이프타임 동안 유효함을 보장할 수 없으므로 거부합니다.

4

Rust에서 Send 트레이트의 역할은 무엇인가요?

5

Rust에서 Sync 트레이트의 역할은 무엇인가요?

+17 면접 질문

다음 면접을 위해 Rust을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기