Mutex es la abreviatura de “mutual exclusión”, es decir, exclusión mutua. Las variables Mutex son la forma más común de implementar la sincronización de threads y de proteger datos compartidos cuando acontecen multitud de escrituras sobre esos datos compartidos.
Una variable Mutex actúa como un candado protegiendo los datos o recursos. El concepto básico de Mutex en Pthreads es que sólo un thread puede cerrar el candado en un determinado instante. Incluso si varios threads intentan cerrar el mismo
Los Mutex pueden ser usados para prevenir “condiciones de carrera”. Este es un ejemplo de una “condición de carrera” en una transacción de un banco.
Una típica secuencia en el uso de un Mutex es:
1. Crear e inicializar la variable Mutex.
2. Varios threads intentan bloquear el Mutex.
3. Sólo uno lo hace y es el poseedor del Mutex.
4. El poseedor del Mutex realiza un conjunto de acciones.
5. El poseedor del Mutex desbloquea el Mutex.
6. Otro thread toma el Mutex y repite el proceso.
7. Finalmente el Mutex es destruido.
Cuando varios threads compiten por un Mutex, los perdedores se bloquean hasta que el ganador desbloquea el Mutex.