ਇੱਕ 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 'ਤੇ ਵੀ ਹੋਵੇ।ਇਹ shared state ਦੀ ਰੱਖਿਆ ਕਰਨ ਲਈ ਰੋਜ਼ਾਨਾ ਦੇ ਟੂਲ ਹਨ। Mutexes races ਰੋਕਣ ਲਈ access ਨੂੰ serialize ਕਰਦੇ ਹਨ; semaphores ਇੱਕ resource pool (connections, permits, rate limits) ਨੂੰ throttle ਕਰਦੇ ਹਨ। ਸਹੀ primitive ਚੁਣਨਾ ਅਤੇ critical sections ਨੂੰ ਛੋਟਾ ਰੱਖਣਾ correct-and-fast ਅਤੇ correct-but-slow ਵਿਚਕਾਰ ਦਾ ਫ਼ਰਕ ਹੈ।
ਵਿਸਤ੍ਰਿਤ ਜਵਾਬਾਂ ਨਾਲ IT ਇੰਟਰਵਿਊ ਸਵਾਲਾਂ ਦੀ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ — ਜੂਨੀਅਰ ਤੋਂ ਸੀਨੀਅਰ ਤੱਕ।
ਦਾਨ ਕਰੋ