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.