Rust

Tokio & Async I/O

Tokio runtime, async tasks, select!, join!, timeout, tokio::spawn, async I/O tệp/mạng

22 câu hỏi phỏng vấn·
Senior
1

Vai trò chính của runtime Tokio trong một ứng dụng Rust bất đồng bộ là gì?

Câu trả lời

Runtime Tokio cung cấp một executor để poll các future cho đến khi hoàn thành. Nó cũng quản lý một scheduler đa thread (mặc định) để phân phối các task trên nhiều thread OS, cùng với một reactor cho các thao tác I/O bất đồng bộ. Nếu không có runtime, các future của Rust sẽ không làm gì cả vì chúng mặc định là lazy.

2

Làm thế nào để khởi tạo runtime Tokio bằng macro #[tokio::main]?

Câu trả lời

Macro #[tokio::main] biến đổi một hàm async main() thành một điểm vào đồng bộ, tạo ra một runtime Tokio đa thread và thực thi hàm async. Macro này tự động sinh ra phần boilerplate cần thiết để tạo runtime và block cho đến khi future chính hoàn thành.

3

Sự khác biệt giữa #[tokio::main] và #[tokio::main(flavor = "current_thread")] là gì?

Câu trả lời

Theo mặc định, #[tokio::main] tạo ra một runtime đa thread phân phối các task trên một pool worker thread. Với flavor = "current_thread", runtime chỉ thực thi tất cả các task trên thread chính, điều này hữu ích cho việc kiểm thử, các ứng dụng đơn giản hoặc khi cần tránh chia sẻ dữ liệu giữa các thread.

4

tokio::spawn() làm gì và nó trả về kiểu dữ liệu nào?

5

Tại sao các future được truyền vào tokio::spawn() phải là 'static?

+19 câu hỏi phỏng vấn

Nắm vững Rust cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí