Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async 파일/네트워크 I/O

22 면접 질문·
Senior
1

비동기 Rust 애플리케이션에서 Tokio runtime의 주요 역할은 무엇입니까?

답변

Tokio runtime은 future가 완료될 때까지 poll하는 executor를 제공합니다. 또한 여러 OS thread에 태스크를 분산시키는 멀티스레드 scheduler(기본값)와 비동기 I/O 작업을 위한 reactor도 관리합니다. runtime이 없으면 Rust future는 기본적으로 lazy하기 때문에 아무 일도 하지 않습니다.

2

#[tokio::main] 매크로로 Tokio runtime을 초기화하려면 어떻게 해야 합니까?

답변

#[tokio::main] 매크로는 async main() 함수를 멀티스레드 Tokio runtime을 생성하고 async 함수를 실행하는 동기 진입점으로 변환합니다. 이 매크로는 runtime을 생성하고 메인 future가 완료될 때까지 블록하는 데 필요한 boilerplate를 자동으로 생성합니다.

3

#[tokio::main]과 #[tokio::main(flavor = "current_thread")]의 차이점은 무엇입니까?

답변

기본적으로 #[tokio::main]은 worker thread 풀에 태스크를 분산하는 멀티스레드 runtime을 생성합니다. flavor = "current_thread"를 사용하면 runtime이 모든 태스크를 메인 thread에서만 실행하는데, 이는 테스트, 간단한 애플리케이션 또는 thread 간 데이터 공유를 피해야 할 때 유용합니다.

4

tokio::spawn()은 무엇을 하며 어떤 타입을 반환합니까?

5

tokio::spawn()에 전달되는 future가 'static이어야 하는 이유는 무엇입니까?

+19 면접 질문

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

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

무료로 시작하기