Mutex adalah sebuah lock yang menjamin mutual exclusion — hanya satu thread yang dapat memegangnya dan memasuki critical section yang terlindungi pada satu waktu. Semaphore menggeneralisasi ini untuk mengizinkan hingga N pemegang concurrent.
Mutex adalah sebuah lock yang menjamin mutual exclusion — hanya satu thread yang dapat memegangnya dan memasuki critical section yang terlindungi pada satu waktu. Semaphore menggeneralisasi ini untuk mengizinkan hingga N pemegang concurrent.
acquire() mengurangi (memblokir pada 0), release() menambah. Mutex pada dasarnya adalah semaphore dengan N=1 tetapi dengan semantik kepemilikan.lock = threading.Lock()
def transfer(a, b, amt):
with lock: # critical section — one thread at a time
a.balance -= amt
b.balance += amt
# Semaphore: cap concurrent DB connections at 10
sem = threading.Semaphore(10)
def query():
with sem: # up to 10 threads run this concurrently
db.execute(...)
with/RAII/defer agar release otomatis bahkan saat exception.Ini adalah alat sehari-hari untuk melindungi shared state. Mutex men-serialize akses untuk mencegah race; semaphore mencekik sebuah resource pool (koneksi, permit, rate limit). Memilih primitive yang tepat dan menjaga critical section tetap pendek adalah perbedaan antara benar-dan-cepat dan benar-tetapi-lambat.
Perpustakaan pertanyaan wawancara IT dengan jawaban mendetail — dari Junior hingga Senior.
Donasi