Mutex là một lock đảm bảo mutual exclusion — mỗi lúc chỉ một thread giữ nó và vào được critical section được bảo vệ. Semaphore tổng quát hoá điều này để cho phép tối đa N thread giữ đồng thời.
Mutex là một lock đảm bảo mutual exclusion — mỗi lúc chỉ một thread giữ nó và vào được critical section được bảo vệ. Semaphore tổng quát hoá điều này để cho phép tối đa N thread giữ đồng thời.
acquire() giảm (block tại 0), release() tăng. Mutex về bản chất là semaphore với N=1 nhưng có ngữ nghĩa ownership.lock = threading.Lock()
def transfer(a, b, amt):
with lock: # critical section — mỗi lúc một thread
a.balance -= amt
b.balance += amt
# Semaphore: giới hạn số kết nối DB đồng thời ở 10
sem = threading.Semaphore(10)
def query():
with sem: # tối đa 10 thread chạy đoạn này cùng lúc
db.execute(...)
with/RAII/defer để release tự động ngay cả khi có exception.Đây là công cụ hằng ngày để bảo vệ shared state. Mutex serialize truy cập để chặn race; semaphore điều tiết một resource pool (connection, permit, rate limit). Chọn đúng primitive và giữ critical section ngắn là ranh giới giữa đúng-và-nhanh với đúng-nhưng-chậm.
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộ