Sobes.tech
Junior

Qual é o objetivo da palavra-chave lock em C#?

sobes.tech IA

Resposta da IA

A palavra-chave lock é usada para garantir a segurança de threads criando uma seção crítica.

Os seus principais objetivos:

  • Bloqueio de acesso: Garante que apenas um thread pode executar o código dentro do bloco lock num dado momento.
  • Proteção de recursos partilhados: Previne condições de corrida ao permitir o acesso simultâneo de múltiplos threads a dados ou recursos partilhados, como campos de classe, coleções, etc.
  • Sincronização de threads: É usada para organizar a ordem de execução de operações em cenários multithread.

Exemplo de uso:

private static readonly object _lockObject = new object(); // Objeto para bloqueio

public void UpdateCounter()
{
    // Início da secção crítica
    lock (_lockObject)
    {
        // Código dentro deste bloco só pode ser executado por um thread de cada vez
        counter++;
    }
    // Fim da secção crítica
}

É importante usar um objeto especializado (_lockObject no exemplo) para bloquear, e não this ou typeof(TypeName), para evitar potenciais problemas de deadlock. Recomenda-se usar objetos do tipo object ou System.Threading.ReaderWriterLockSlim para cenários mais complexos.