Mutex lock ne da ke tabbatar da mutual exclusion — thread ɗaya kawai zai iya riƙe shi ya shiga critical section da aka kare a lokaci ɗaya. Semaphore yana faɗaɗa wannan don ba da damar har zuwa N masu riƙe a lokaci guda.
Mutex lock ne da ke tabbatar da mutual exclusion — thread ɗaya kawai zai iya riƙe shi ya shiga critical section da aka kare a lokaci ɗaya. Semaphore yana faɗaɗa wannan don ba da damar har zuwa N masu riƙe a lokaci guda.
acquire() yana ragewa (yana toshewa a 0), release() yana ƙarawa. Mutex a zahiri semaphore ne da N=1 amma da ownership semantics.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 domin release ya zama atomatik ko a lokacin exceptions.Waɗannan su ne kayan aiki na yau da kullum don kare shared state. Mutexes suna serialize shiga don hana races; semaphores suna ƙuntata resource pool (connections, permits, rate limits). Zaɓen primitive da ya dace da riƙe critical sections ƙanana shine bambanci tsakanin daidai-da-sauri da daidai-amma-jinkiri.
Ɗakin karatu na tambayoyin hira na IT tare da amsoshi cikakke — daga Junior zuwa Senior.
Ba da Gudummawa