Spinlocks no MS SQL Server 2019
Gabarito: D (I e II). As afirmativas I e II estão corretas, pois descrevem corretamente o comportamento de spinlocks (espera ativa por curto período, com eventual suspensão) e seu uso no SQL Server. A afirmativa III inverte a definição: quem faz loop é o spinlock, enquanto locks suspendem a thread imediatamente.
Afirmativa | Conteúdo | Correta? | Justificativa |
|---|
I | Spinlocks são usados pelo SO e SQL Server para acesso curto a estruturas; thread faz loop (busy-wait) por um período antes de eventual suspensão. | ✅ Sim | Descreve corretamente o comportamento de spinlock: espera ativa seguida de possível suspensão. |
II | SQL Server usa spinlocks para serializar acesso a estruturas internas de dados, de forma semelhante a locks. | ✅ Sim | Spinlocks são mecanismos leves de sincronização no SQL Server para recursos de curta duração. |
III | Afirma que spinlock suspende a thread imediatamente e lock faz loop. | ❌ Não | Inverte os papéis: spinlock faz loop (busy-wait); lock suspende a thread imediatamente. |
Afirmativa I — ✅ Correta
Descreve corretamente o funcionamento de um spinlock: ao tentar adquirir o recurso, a thread executa um loop (busy-wait) por um curto intervalo, e após um tempo (spin count) pode ser suspensa, permitindo que outras threads executem. Spinlocks são usados pelo sistema operacional e pelo SQL Server para proteger estruturas de dados por breves períodos.
Afirmativa II — ✅ Correta
Afirma que o SQL Server utiliza spinlocks para serializar o acesso a estruturas internas de dados, de forma semelhante aos locks. É correto: spinlocks são um mecanismo de sincronização leve no SQL Server para proteger recursos de curta duração.
Afirmativa III — ❌ Incorreta
A afirmativa troca os papéis: na verdade, o spinlock executa um loop (busy-wait) por um período verificando a disponibilidade, enquanto o lock (como um mutex) suspende a thread imediatamente se o recurso não estiver disponível. A descrição apresentada está invertida.
Gabarito: D (I e II).