Mutex एउटा lock हो जसले पारस्परिक बहिष्करण (mutual exclusion) सुनिश्चित गर्छ — एक पटकमा एउटै thread ले यसलाई समात्न र सुरक्षित critical section मा प्रवेश गर्न सक्छ। Semaphore ले यसलाई सामान्यीकरण गरेर N समवर्ती धारकसम्म अनुमति दिन्छ।
Mutex एउटा lock हो जसले पारस्परिक बहिष्करण (mutual exclusion) सुनिश्चित गर्छ — एक पटकमा एउटै thread ले यसलाई समात्न र सुरक्षित critical section मा प्रवेश गर्न सक्छ। Semaphore ले यसलाई सामान्यीकरण गरेर N समवर्ती धारकसम्म अनुमति दिन्छ।
acquire() ले घटाउँछ (0 मा block हुन्छ), release() ले बढाउँछ। Mutex मूलतः N=1 भएको semaphore हो तर स्वामित्व 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 प्रयोग गर्नुहोस्।यी साझा state जोगाउने दैनिक उपकरणहरू हुन्। Mutexes ले races रोक्न access serialize गर्छन्; semaphores ले संसाधन pool (connections, permits, rate limits) throttle गर्छन्। सही primitive छान्नु र critical sections छोटो राख्नु नै सही-र-छिटो अनि सही-तर-ढिलो बीचको भिन्नता हो।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्