Uma equipe dividiu um programa em várias threads para executar tarefas ao mesmo tempo. Durante os testes, duas…
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
Uma equipe dividiu um programa em várias threads para executar tarefas ao mesmo tempo. Durante os testes, duas threads acessaram a mesma variável e, às vezes, o resultado ficou incorreto. A equipe quer diminuir esse problema. Qual prática reduz o risco de uma condição de corrida nesse programa?
- A) Confiar na ordem em que as threads foram criadas para organizar os acessos.
- B) Usar variáveis globais para facilitar a comunicação entre as threads.
- C) Permitir que todas as threads alterem a variável ao mesmo tempo.
- D) Proteger o acesso à variável compartilhada usando mutex ou lock.
- E) Aumentar o número de threads para distribuir melhor as tarefas do programa.
✅ Resposta correta: alternativa D
Resolução passo a passo
- A questão descreve um problema clássico de concorrência: duas threads acessam a mesma variável e o resultado às vezes sai errado. Isso é uma condição de corrida, que ocorre quando o resultado depende da ordem imprevisível em que as threads executam operações sobre dados compartilhados.
- Para reduzir esse risco, é preciso garantir que apenas uma thread por vez acesse a região crítica, ou seja, o trecho que lê e altera a variável compartilhada. Isso é feito com mecanismos de exclusão mútua, como mutex ou lock. Ao adquirir o lock antes de acessar a variável e liberá-lo depois, as operações deixam de se intercalar de forma perigosa.
- Por que as outras estão erradas: A) depender da ordem de criação não garante nenhuma ordem de execução, pois o escalonador do sistema operacional decide quando cada thread roda; B) variáveis globais aumentam o compartilhamento sem controle, o que agrava a condição de corrida em vez de reduzi-la; C) permitir alterações simultâneas é exatamente a causa do problema; E) mais threads aumentam a concorrência sobre a mesma variável e tendem a piorar o risco, sem resolver a sincronização.
- Conclusão: a alternativa correta é a D, que coincide com o gabarito oficial.
💡 Dica: Considere as práticas de sincronização de threads.
Alternativa por alternativa
O aluno acredita que a ordem de criação das threads determina a ordem de execução e, assim, organiza os acessos à variável.
Por que engana: O aluno pode acreditar que a linguagem de programação gerencia automaticamente as variáveis compartilhadas, ignorando a necessidade de controle explícito.
O aluno acha que facilitar a comunicação com variáveis globais ajuda a evitar conflitos, sem perceber que o compartilhamento sem controle aumenta a chance de corrida.
O aluno entende que permitir alterações simultâneas agiliza o programa, sem perceber que o acesso concorrente sem controle é justamente a causa da condição de corrida.
Mutex e locks controlam o acesso aos dados compartilhados, permitindo que apenas uma thread por vez realize uma operação que não deve ocorrer simultaneamente com outra.
O aluno pensa que mais threads distribuem melhor o trabalho e, portanto, resolvem o problema, sem notar que mais threads sobre a mesma variável aumentam a concorrência e o risco.
Raio-X da questão
variáveis compartilhadas
avaliacao
condição de corrida · sincronização de threads
Revisar técnicas de sincronização em programação paralela.
O aluno pode acreditar que a linguagem de programação gerencia automaticamente as variáveis compartilhadas, ignorando a necessidade de controle explícito.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- A biblioteca da escola recebeu muitos livros novos. O sistema precisa registrar os títulos de ficção, ciência e…
- Durante uma viagem de ônibus pela cidade, Caio observou o funcionamento do sistema de bilhetagem e de planejamento de…
- Pesquisadores acompanham, durante o período de chuvas, uma plataforma que ajuda a Defesa Civil a atualizar mapas de…
- — Se a energia cair no centro de memória da capital, os depoimentos das comunidades ficarão indisponíveis? — perguntou…
- “Se cada computador escutar uma parte, terminaremos antes da abertura do acervo”, explicou a coordenadora da rádio…
- Clientes se aproximam da barraca de sucos durante uma feira cultural. Para receber pagamentos, a vendedora usa uma…
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
