Un mutex est un verrou qui garantit l'exclusion mutuelle — un seul thread peut le détenir et entrer dans la section critique protégée à la fois. Un sémaphore généralise cela pour autoriser jusqu'à N détenteurs concurrents.
Un mutex est un verrou qui garantit l'exclusion mutuelle — un seul thread peut le détenir et entrer dans la section critique protégée à la fois. Un sémaphore généralise cela pour autoriser jusqu'à N détenteurs concurrents.
acquire() décrémente (se bloque à 0), release() incrémente. Un mutex est essentiellement un sémaphore avec N=1 mais doté d'une sémantique de possession.lock = threading.Lock()
def transfer(a, b, amt):
with lock: # section critique — un thread à la fois
a.balance -= amt
b.balance += amt
# Sémaphore : plafonne les connexions DB concurrentes à 10
sem = threading.Semaphore(10)
def query():
with sem: # jusqu'à 10 threads exécutent ceci en même temps
db.execute(...)
with/RAII/defer pour que la libération soit automatique même en cas d'exception.Ce sont les outils du quotidien pour protéger l'état partagé. Les mutex sérialisent l'accès pour prévenir les races ; les sémaphores régulent un pool de ressources (connexions, permis, limites de débit). Choisir la bonne primitive et garder les sections critiques courtes fait la différence entre correct-et-rapide et correct-mais-lent.
Une bibliothèque de questions d'entretien IT avec des réponses détaillées — du Junior au Senior.
Faire un don