Quay lại thư viện câu hỏi
rust Middle

Sự khác biệt giữa việc sử dụng `std::sync::Mutex` và `tokio::sync::Mutex` trong kiến trúc ứng dụng Rust là gì?

Phân tích kỹ thuật

  • std::sync::Mutex: Là một blocking mutex. Khi một thread cố gắng lấy lock, nó sẽ block toàn bộ thread đó cho đến khi lock được giải phóng. Nó không được thiết kế để giữ qua các điểm .await.
  • tokio::sync::Mutex: Là một async-aware mutex. Khi một task không thể lấy lock, nó sẽ trả về Poll::Pending và cho phép executor chuyển sang thực thi các task khác, tránh việc block toàn bộ thread.

Khi nào sử dụng?

  • Sử dụng std::sync::Mutex khi thời gian giữ lock cực ngắn (chỉ là các thao tác bộ nhớ đơn giản) và không có các điểm chờ đợi async bên trong vùng critical section.
  • Sử dụng tokio::sync::Mutex khi bạn cần giữ lock qua các điểm .await.

Lưu ý

Việc sử dụng tokio::sync::Mutex có chi phí hiệu năng cao hơn do cơ chế quản lý task của runtime. Nếu có thể, hãy thiết kế lại kiến trúc để sử dụng message passing (channels) thay vì chia sẻ trạng thái qua Mutex.

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề rust

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)

Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.

High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học