Junior — Middle
Qual é a diferença entre um bloqueio normal e um bloqueio recursivo na sincronização de threads?
sobes.tech IA
Resposta da IA
O bloqueio normal (mutex) permite que um thread adquira um recurso, e se esse mesmo thread tentar adquiri-lo novamente, será bloqueado, levando a um deadlock.
O bloqueio recursivo (recursive mutex) difere ao permitir que o mesmo thread o adquira várias vezes consecutivas sem ser bloqueado. No entanto, o bloqueio deve ser liberado tantas vezes quanto foi adquirido, para que outros threads possam acessá-lo.
Exemplo:
-
Bloqueio normal:
- O thread A adquire o bloqueio.
- O thread A tenta adquiri-lo novamente — fica bloqueado para sempre.
-
Bloqueio recursivo:
- O thread A adquire o bloqueio.
- O thread A o adquire novamente — com sucesso.
- O thread A libera o bloqueio duas vezes, após o que ele fica disponível para outros threads.