Em um programa com múltiplas threads que atualizam uma mesma variável compartilhada, qual mecanismo previne…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Compreender os conceitos de paralelismo, concorrência e armazenamento/ processamento distribuídos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Em um programa com múltiplas threads que atualizam uma mesma variável compartilhada, qual mecanismo previne condições de corrida durante a atualização desse dado?
- A) Uso de arrays para compartilhar dados entre threads.
- B) Implementação de delays aleatórios entre acessos à variável.
- C) Uso de mutex/lock (exclusão mútua) para sincronizar acesso
- D) Uso de variáveis globais que são acessíveis a todas as threads.
- E) Proibição de uso de variáveis compartilhadas entre threads.
✅ Resposta correta: alternativa C
Resolução passo a passo
- A questão pergunta qual mecanismo impede condições de corrida quando várias threads atualizam a mesma variável compartilhada. Condição de corrida ocorre quando o resultado depende da ordem imprevisível em que as threads acessam o dado, e uma atualização pode ser perdida ou corrompida.
- Resolvendo por conta própria, a solução padrão é garantir exclusão mútua: somente uma thread por vez executa a seção crítica (a leitura, cálculo e escrita da variável). Isso é feito com mutex ou lock, que bloqueia o acesso enquanto uma thread está atualizando o dado.
- A alternativa C descreve exatamente esse mecanismo, portanto está correta e coincide com o gabarito oficial.
- Por que as outras estão erradas:
- A) Arrays são apenas uma estrutura de dados para armazenar valores; não impedem simultaneidade no acesso.
- B) Delays aleatórios não garantem nada, apenas reduzem a probabilidade de conflito sem eliminá-la.
- D) Variáveis globais são justamente o que gera o problema, pois ficam acessíveis a todas as threads sem controle.
- E) Proibir variáveis compartilhadas não é um mecanismo de sincronização e inviabiliza o trabalho cooperativo entre threads que a questão pressupõe.
💡 Dica: Considere os mecanismos de sincronização em programação.
Alternativa por alternativa
O aluno acredita que organizar os dados em arrays resolve o compartilhamento, confundindo estrutura de armazenamento com controle de acesso concorrente.
O aluno imagina que, espaçando os acessos com atrasos aleatórios, as threads nunca se sobrepõem, sem perceber que isso apenas diminui a chance de conflito sem garantir ausência de corrida.
Por que engana: Escolher a alternativa que sugere o uso de delays, acreditando que isso é suficiente para evitar condições de corrida.
Mutexes garantem que apenas uma thread execute a seção crítica por vez, evitando interleavings que causam condições de corrida e estado inconsistente.
O aluno associa variável global a dado seguro para todos, ignorando que o acesso simultâneo sem controle a uma variável global é justamente a origem da condição de corrida.
O aluno entende que a forma de evitar problemas é eliminar o compartilhamento de dados, sem perceber que a questão trata de controlar o acesso, não de proibi-lo.
Raio-X da questão
condições de corrida
avaliacao
sincronização de threads · variáveis compartilhadas
Revisar os mecanismos de sincronização em programação com threads.
Escolher a alternativa que sugere o uso de delays, acreditando que isso é suficiente para evitar condições de corrida.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Uma equipe dividiu um programa em várias threads para executar tarefas ao mesmo tempo. Durante os testes, duas threads…
- Ao paralelizar processamento por linhas de uma matriz de registros e atualizar uma variável global 'soma', qual…
- Ao implementar um autômato baseado em eventos cujo handler concorrente incrementa uma variável compartilhada 'contador'…
- Em um algoritmo paralelo que atualiza contadores por turma, qual prática reduz a necessidade de locks ao manipular uma…
- Em sistemas que executam várias threads, o que se entende por concorrência ao acessar a mesma variável?
- Para tornar um algoritmo reutilizável e seguro para execução paralela, qual prática relacionada a variáveis e efeitos…
Todas as questões de Sistemas distribuídos e internet - Fundamentos de sistemas distribuídos
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
