Mutex हा एक lock आहे जो mutual exclusion ची हमी देतो — एका वेळी फक्त एकच thread तो धरून ठेवू शकतो आणि संरक्षित critical section मध्ये प्रवेश करू शकतो. Semaphore हे N पर्यंत concurrent holders ला परवानगी देण्यासाठी याचे सामान्यीकरण करते.
Mutex हा एक lock आहे जो mutual exclusion ची हमी देतो — एका वेळी फक्त एकच thread तो धरून ठेवू शकतो आणि संरक्षित critical section मध्ये प्रवेश करू शकतो. Semaphore हे N पर्यंत concurrent holders ला परवानगी देण्यासाठी याचे सामान्यीकरण करते.
acquire() कमी करते (0 वर block होते), release() वाढवते. Mutex हे मूलतः N=1 असलेले semaphore आहे पण 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 वापरा जेणेकरून exceptions वरही release आपोआप होते.Shared state चे रक्षण करण्यासाठी ही रोजची साधने आहेत. Mutexes races रोखण्यासाठी access serialize करतात; semaphores एका resource pool ला (connections, permits, rate limits) नियंत्रित करतात. योग्य primitive निवडणे आणि critical sections लहान ठेवणे हेच correct-and-fast आणि correct-but-slow यांच्यातील फरक आहे.
सविस्तर उत्तरांसह IT मुलाखत प्रश्नांचे ग्रंथालय — Junior पासून Senior पर्यंत.
देणगी द्या