ExpertiDict

C++ · Intermediário · Inglês · Técnico

lock guard

lɑːk ɡɑːɹdsubstantivo

Classe RAII que trava um mutex na construção e o destrava na destruição, ao sair do escopo. Garante o unlock mesmo se ocorrer uma exceção ou um return antecipado.

Onde usar

É o jeito padrão de proteger uma seção crítica. Para travar vários mutexes sem deadlock, usa-se std::scoped_lock; para destravar manualmente, std::unique_lock.

Em código

std::mutex a, b;
void f() {
  std::lock_guard<std::mutex> g(a);
  // seção crítica de a
}
void g2() {
  std::scoped_lock lk(a, b);  // C++17
}

Exemplos

Use a lock guard instead of calling lock by hand.

Use um lock guard em vez de chamar lock na mão.

The guard unlocks when the function returns.

O guard destrava quando a função retorna.

Cuidado

Sem nome de variável, o guard vira um temporário destruído na hora e não protege nada.

Sinônimos

guard de mutex

Veja também

Todos os termos de C++