Mutex ni lock inayohakikisha mutual exclusion — thread moja tu inaweza kuishikilia na kuingia katika critical section iliyolindwa kwa wakati mmoja. Semaphore hupanua hili kuruhusu hadi washikaji N kwa wakati mmoja.
Mutex ni lock inayohakikisha mutual exclusion — thread moja tu inaweza kuishikilia na kuingia katika critical section iliyolindwa kwa wakati mmoja. Semaphore hupanua hili kuruhusu hadi washikaji N kwa wakati mmoja.
acquire() inapunguza (inazuia ikiwa 0), release() inaongeza. Mutex kimsingi ni semaphore yenye N=1 lakini yenye semantics za umiliki.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 ili release iwe otomatiki hata wakati wa exceptions.Hivi ni vifaa vya kila siku vya kulinda shared state. Mutexes hufanya ufikiaji kuwa serial ili kuzuia races; semaphores hubana resource pool (connections, permits, rate limits). Kuchagua primitive sahihi na kuweka critical sections fupi ndiyo tofauti kati ya sahihi-na-haraka na sahihi-lakini-polepole.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia