Aula 10: Mutex — Protegendo Dados Compartilhados
Quando múltiplas threads acessam dados compartilhados sem sincronização, ocorre uma race condition — um bug difícil de reproduzir que pode gerar dados incorretos. O mutex (Mutual Exclusion) é o mecanismo básico que resolve esse problema.
Um mutex é como a chave de um banheiro: só quem segura a chave pode entrar. Todos os outros esperam do lado de fora.
- mutex
- Mutual Exclusion — um mecanismo de sincronização que permite que apenas uma thread segure o lock por vez, protegendo uma critical section.
- race condition
- Uma condição em que o resultado depende da ordem imprevisível em que as threads realizam operações. Causa bugs difíceis de reproduzir.
- seção crítica
- Uma seção de código onde dados compartilhados são acessados; precisa estar protegida por um mutex para evitar race conditions.
- lock_guard
- Um wrapper RAII em C++ que faz lock no construtor e unlock no destructor, garantindo que o lock sempre seja liberado, mesmo em caso de exceção.
- deadlock
- Um estado em que duas ou mais threads esperam uma pela outra para liberar um mutex, e nenhuma consegue avançar.