Lección 10: Mutex — protección de datos compartidos
Cuando varios hilos acceden a datos compartidos sin sincronización, ocurre una race condition (condición de carrera) — un bug difícil de reproducir que puede producir datos incorrectos. El mutex (Mutual Exclusion) es el mecanismo básico que resuelve este problema.
Un mutex es como la llave de un baño: solo quien tiene la llave puede entrar. Los demás esperan afuera.
- mutex
- Mutual Exclusion — un mecanismo de sincronización que permite que solo un hilo a la vez mantenga el bloqueo, protegiendo así una sección crítica.
- race condition
- Una condición en la que el resultado depende del orden impredecible en que los hilos realizan operaciones. Causa bugs difíciles de reproducir.
- sección crítica
- Una sección de código donde se accede a datos compartidos; debe estar protegida por un mutex para evitar race conditions.
- lock_guard
- Un wrapper RAII en C++ que hace lock en el constructor y unlock en el destructor, garantizando que el bloqueo siempre se libera, incluso ante una excepción.
- deadlock
- Un estado en el que dos o más hilos se esperan mutuamente para que el otro libere un mutex, y ninguno puede avanzar.