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
locknum 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.