C · Intermediário · Inglês · Técnico
mutex
Trava de exclusão mútua (pthread_mutex_t) que garante que só uma thread por vez execute a região crítica protegida. É o jeito básico de evitar corrida de dados.
Onde usar
Surge quando duas threads mexem no mesmo contador ou lista. Em review se verifica que todo lock tem um unlock em todos os caminhos de saída, inclusive os de erro.
Em código
#include <pthread.h>
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
long total;
void soma(long v) {
pthread_mutex_lock(&m);
total += v;
pthread_mutex_unlock(&m);
}Exemplos
Lock the mutex before touching the shared counter.
Trave o mutex antes de mexer no contador compartilhado.
We have a deadlock because the two threads lock the mutexes in opposite order.
Temos um deadlock porque as duas threads travam os mutexes em ordem oposta.
Cuidado
Dar return no meio da seção crítica sem destravar, ou travar dois mutexes em ordens diferentes em threads distintas, o que causa deadlock.
Sinônimos
trava, lock
Origem
Contração de mutual exclusion, exclusão mútua.