Rust

Concurrency Basics

Threads, thread::spawn, move closures, channels (mpsc), trait Send & Sync, thread safety

20 câu hỏi phỏng vấn·
Mid-Level
1

Nên dùng hàm nào để tạo một thread mới trong Rust?

Câu trả lời

Hàm thread::spawn từ module std::thread tạo một thread thực thi mới. Nó nhận một closure làm tham số và trả về một JoinHandle cho phép chờ thread kết thúc bằng phương thức join(). Hàm này là điểm vào chính cho lập trình đồng thời dựa trên thread trong Rust.

2

Phương thức join() trả về gì khi được gọi trên một JoinHandle?

Câu trả lời

Phương thức join() trả về một Result<T, E> trong đó T là kiểu trả về của closure của thread. Nếu thread kết thúc bình thường, bạn nhận được Ok(giá trị). Nếu thread bị panic, bạn nhận được Err chứa thông tin panic. Điều này cho phép lấy kết quả của thread hoặc xử lý lỗi của nó một cách an toàn.

3

Tại sao dùng từ khóa move với một closure được truyền cho thread::spawn?

Câu trả lời

Từ khóa move buộc closure lấy ownership của các biến mà nó bắt giữ thay vì mượn chúng. Điều này thiết yếu với thread::spawn vì thread mới có thể sống lâu hơn phạm vi nơi các biến được định nghĩa. Không có move, trình biên dịch từ chối vì không thể đảm bảo các tham chiếu sẽ hợp lệ trong suốt vòng đời của thread.

4

Vai trò của trait Send trong Rust là gì?

5

Vai trò của trait Sync trong Rust là gì?

+17 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í