Sobes.tech
Junior — Middle

O que exatamente é transmitido ou utilizado no mecanismo de bloqueio (lock) na programação multithread?

sobes.tech IA

Resposta da IA

No mecanismo de bloqueio (lock) na programação multithread, é utilizado um objeto ou primitivo de sincronização que garante acesso exclusivo a um recurso compartilhado. Quando um thread adquire o bloqueio, outros threads que tentarem adquirir o mesmo bloqueio esperarão até que ele seja liberado.

Ou seja, sob "lock" é passado ou utilizado:

  • O estado do bloqueio (ocupado/disponível).
  • O mecanismo de espera (por exemplo, uma fila de threads aguardando liberação).

Em C#, a palavra-chave lock funciona com um objeto que serve como marcador de bloqueio. Exemplo:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // Código que deve ser executado por apenas um thread de cada vez
    }
}

Aqui, em lock, é passada uma referência ao objeto _lockObj, que é usado para gerenciar o acesso. Internamente, o CLR usa esse objeto para controlar o estado do bloqueio.