Questão #11881342014

Concursos públicos

O fragmento de código a seguir, escrito em Java, descreve duas implementações diferentes para um lock. Ambas possuem um método denominado acquire e um método denominado release.

Imagem da questão

Considera-se que:

• as duas implementações de lock são utilizadas por aplicações com, no máximo, duas threads;

• uma aplicação que utilizar qualquer uma destas implementações invocará o método acquire antes de entrar em sua seção crítica e o método release após deixar a seção crítica;

• tanto o método acquire quanto o método release são operações atômicas nas duas implementações de lock;

• para a implementação que requer um tid (thread id), assume-se que ele sempre será 0 ou 1;

• os métodos disableinterrupts e enableinterrupts são utilizados para desabilitar e habilitar respectivamente as interrupções do processador onde o código for executado. O código desses dois métodos foi desenvolvido para ser utilizado em uma máquina com um ou dois processadores.

A partir das informações apresentadas, avalie as afirmações a seguir.

I. A implementação de LockA garante progresso.

II. A implementação de LockB garante progresso.

III. A implementação de LockA garante exclusão mútua.

IV. A implementação de LockB garante exclusão mútua.

É correto apenas o que se afirma em