Sobes.tech
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.