
Concurrency Basics
Threads, thread::spawn, move closures, channels (mpsc), Send & Sync 트레이트, thread safety
20 면접 질문·
Mid-Level
1Rust에서 새 스레드를 생성하려면 어떤 함수를 사용해야 하나요?
1
Rust에서 새 스레드를 생성하려면 어떤 함수를 사용해야 하나요?
답변
std::thread 모듈의 thread::spawn 함수는 새로운 실행 스레드를 생성합니다. 클로저를 매개변수로 받고 join() 메서드로 스레드 종료를 기다릴 수 있는 JoinHandle을 반환합니다. 이 함수는 Rust에서 스레드 기반 동시성 프로그래밍의 주요 진입점입니다.
2JoinHandle에서 호출한 join() 메서드는 무엇을 반환하나요?
2
JoinHandle에서 호출한 join() 메서드는 무엇을 반환하나요?
답변
join() 메서드는 Result<T, E>를 반환하며, 여기서 T는 스레드 클로저의 반환 타입입니다. 스레드가 정상적으로 종료되면 Ok(값)을 얻습니다. 스레드가 패닉을 일으키면 패닉 정보를 담은 Err을 얻습니다. 이를 통해 스레드 결과를 안전하게 가져오거나 오류를 처리할 수 있습니다.
3thread::spawn에 전달하는 클로저에 move 키워드를 사용하는 이유는 무엇인가요?
3
thread::spawn에 전달하는 클로저에 move 키워드를 사용하는 이유는 무엇인가요?
답변
move 키워드는 클로저가 캡처한 변수를 빌리는 대신 ownership을 가져가도록 강제합니다. 새 스레드가 변수가 정의된 스코프보다 오래 살 수 있기 때문에 thread::spawn에서는 필수적입니다. move가 없으면 컴파일러는 참조가 스레드의 전체 라이프타임 동안 유효함을 보장할 수 없으므로 거부합니다.
4
Rust에서 Send 트레이트의 역할은 무엇인가요?
5
Rust에서 Sync 트레이트의 역할은 무엇인가요?
+17 면접 질문
기타 Rust 면접 주제
Rust 기초
Junior
25개 질문Ownership & Borrowing
Junior
22개 질문Structs & Enums
Junior
20개 질문에러 처리
Junior
18개 질문컬렉션
Junior
20개 질문모듈과 패키지
Junior
18개 질문Traits
Mid-Level
22개 질문Generics
Mid-Level
20개 질문Lifetimes
Mid-Level
20개 질문Iterators & Closures
Mid-Level
22개 질문Smart Pointers
Mid-Level
22개 질문async/await
Mid-Level
22개 질문Testing
Mid-Level
18개 질문Cargo & Ecosystem
Mid-Level
18개 질문Pattern Matching
Mid-Level
18개 질문매크로
Mid-Level
20개 질문Serde와 직렬화
Mid-Level
20개 질문Unsafe Rust
Senior
20개 질문고급 트레잇
Senior
22개 질문고급 lifetime
Senior
20개 질문Type System
Senior
20개 질문Tokio & Async I/O
Senior
22개 질문성능 최적화
Senior
20개 질문Memory Management
Senior
20개 질문Web Frameworks
Senior
22개 질문Database Integration
Senior
20개 질문Rust 디자인 패턴
Senior
20개 질문