Definição – o que significa a declaração de bloqueio?
Uma instrução de bloqueio, em C #, é uma instrução que contém a palavra-chave “lock” e é usada em aplicativos multithread para garantir que a thread atual execute um bloco de código até a conclusão sem interrupção por outras threads. A instrução de bloqueio obtém um bloqueio de exclusão mútua para um determinado objeto, de forma que um encadeamento execute o bloco de código por vez e saia do bloco de código após liberar o bloqueio.
A instrução de bloqueio é uma construção de bloqueio exclusiva usada para garantir acesso sincronizado a dados compartilhados em aplicativos multithread. Isso ajuda a proteger a integridade de um recurso mutável que é compartilhado por vários threads sem criar interferência entre esses threads. A instrução de bloqueio pode ser usada por um objeto singleton para impedir o acesso simultâneo de seus dados comuns por vários clientes.
A instrução de bloqueio é o primitivo de sincronização principal disponível na Biblioteca de Classes do .NET Framework. Ele gera automaticamente um código consistente e seguro para exceções que pode lidar com as necessidades de sincronização em programas multithread. Ele também fornece um método fácil de controlar a sincronização, gerando código eficiente, o que evita erros que podem ser causados por código escrito manualmente.
Definirtec explica a declaração de bloqueio
A instrução de bloqueio deve ser fornecida com um argumento do tipo de referência, não do tipo de valor. Em geral, é recomendado bloquear um membro de instância privada ou membro estático privado para proteger os dados que são compartilhados entre todas as instâncias do objeto. Visto que o bloqueio em tipos ou instâncias públicas que estão além do controle do código pode resultar em situações de deadlock em que vários threads aguardam a liberação de um único objeto usado para uma instrução de bloqueio, eles devem ser evitados.
Um exemplo para o uso da instrução de bloqueio pode ser um aplicativo multithread em que um objeto de conta com um método para retirar um saldo usa a instrução de bloqueio para evitar que várias threads executem o mesmo método simultaneamente, o que poderia empurrar o saldo para um número negativo .
O corpo de uma instrução de bloqueio precisa ser pequeno para reduzir o tempo necessário para outros encadeamentos aguardando o bloqueio, diminuindo as chances de conflito e minimizando a possibilidade de ocorrer uma exceção.
As limitações no uso de instruções de bloqueio incluem que elas só podem ser usadas com dados relevantes para o aplicativo atual. As instruções de bloqueio também não podem suportar um tempo limite.
Esta definição foi escrita no contexto de C #