Un mutex es un lock que garantiza la exclusión mutua — solo un hilo puede retenerlo y entrar en la sección crítica protegida a la vez. Un semáforo generaliza esto para permitir hasta N poseedores concurrentes.
Un mutex es un lock que garantiza la exclusión mutua — solo un hilo puede retenerlo y entrar en la sección crítica protegida a la vez. Un semáforo generaliza esto para permitir hasta N poseedores concurrentes.
acquire() decrementa (se bloquea en 0), release() incrementa. Un mutex es esencialmente un semáforo con N=1 pero con semántica de propiedad.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 para que la liberación sea automática incluso ante excepciones.Estas son las herramientas cotidianas para proteger el estado compartido. Los mutexes serializan el acceso para prevenir carreras; los semáforos regulan un pool de recursos (conexiones, permisos, límites de tasa). Elegir la primitiva correcta y mantener las secciones críticas cortas es la diferencia entre correcto-y-rápido y correcto-pero-lento.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar