C++ · Intermediário · Inglês · Técnico
mutex
Objeto de exclusão mútua que garante que só uma thread por vez execute uma seção crítica. O std::mutex oferece lock e unlock, mas costuma ser usado via guard.
Onde usar
Protege dados compartilhados entre threads, como um contador ou uma fila. Esquecer de travar em algum acesso gera data race, e travar em ordens diferentes gera deadlock.
Em código
std::mutex m;
int total = 0;
void somar(int x) {
m.lock();
total += x;
m.unlock(); // prefira lock_guard
}Exemplos
Guard the shared counter with a mutex.
Proteja o contador compartilhado com um mutex.
Both threads lock the mutexes in different orders, that's a deadlock.
As duas threads travam os mutexes em ordens diferentes, isso é deadlock.
Cuidado
Evite lock e unlock manuais: uma exceção entre os dois deixa o mutex travado para sempre.
Sinônimos
trava de exclusão mútua
Origem
Contração de mutual exclusion, exclusão mútua.