
Primitive đồng bộ hóa
sync.Mutex, RWMutex, Once, Pool, Map, Cond, các phép toán atomic
1sync.Mutex trong Go là gì?
sync.Mutex trong Go là gì?
Câu trả lời
Một sync.Mutex (mutual exclusion lock) là một primitive đồng bộ hóa đảm bảo chỉ một goroutine có thể truy cập critical section tại một thời điểm. Gọi Lock sẽ chặn cho đến khi mutex khả dụng, và Unlock giải phóng nó cho các goroutine khác. Dùng để bảo vệ truy cập đồng thời vào dữ liệu dùng chung.
2Điều gì xảy ra nếu chúng ta quên gọi Unlock sau Lock trên một sync.Mutex?
Điều gì xảy ra nếu chúng ta quên gọi Unlock sau Lock trên một sync.Mutex?
Câu trả lời
Quên Unlock tạo ra một deadlock tiềm ẩn vì các goroutine khác sẽ chờ vô thời hạn để giành được mutex. Thực hành tốt nhất là dùng defer để đảm bảo Unlock sẽ được gọi ngay cả khi xảy ra panic. Luôn ghép cặp Lock và Unlock trong cùng một scope để tránh rò rỉ lock.
3Sự khác biệt chính giữa sync.Mutex và sync.RWMutex là gì?
Sự khác biệt chính giữa sync.Mutex và sync.RWMutex là gì?
Câu trả lời
sync.RWMutex cho phép nhiều lượt đọc đồng thời qua RLock nhưng chỉ một lượt ghi độc quyền qua Lock. Điều này cải thiện hiệu năng cho các tình huống đọc nhiều vì các reader không chặn lẫn nhau. Dùng RWMutex khi đọc thường xuyên và ghi hiếm khi xảy ra.
Tại sao dùng defer với Unlock trên một sync.Mutex?
Khi nào nên ưu tiên sync.RWMutex hơn sync.Mutex?
+19 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Go khác
Kiến thức cơ bản về Go
Cấu trúc dữ liệu Go
Interface trong Go
Xử lý lỗi
Cơ bản về Goroutine
Channels
Go Modules
Máy chủ HTTP
HTTP Client
Mã hóa JSON
Database/SQL
Gói context
Testing
Các mẫu Concurrency
Framework web Go
Thiết kế API REST
gRPC
Reflection
Quản lý bộ nhớ
Tối ưu hóa hiệu năng
Generics
Go Design Patterns
Microservices
Bảo mật và Xác thực
Docker & Containerization
Kubernetes Basics
Go Nâng cao
Phát triển CLI
Nắm vững Go 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í