mutex
A synchronization primitive used to prevent multiple threads from accessing a shared resource simultaneously.
A Mutex (short for Mutual Exclusion) is a locking mechanism used to manage access to a shared resource. Only one thread can 'own' a mutex at a time. If a thread wants to use a resource, it must 'lock' the mutex. If the mutex is already locked, the thread's execution is typically blocked until the owner 'unlocks' it.
graph LR
Center["mutex"]:::main
Rel_semaphore["semaphore"]:::related -.-> Center
click Rel_semaphore "/terms/semaphore"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Knowledge Check
🧒 Explain Like I'm 5
A mutex is like a key to a single-person bathroom. Only the person with the key can go in. If you want to go in and the door is locked, you have to wait in line until the person inside comes out and gives you the key.
🤓 Expert Deep Dive
Mutexes are implemented using atomic hardware instructions (like Test-and-Set or Compare-and-Swap). Spinlocks are a type of mutex where the thread repeatedly checks the lock in a loop, while sleep-mutexes yield the CPU to the scheduler. Recursive mutexes allow the same thread to lock the object multiple times.