Para tornar um algoritmo reutilizável e seguro para execução paralela, qual prática relacionada a variáveis e…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Explorar e construir a solução de problemas por meio de refinamentos, utilizando diversos níveis de abstração desde a especificação até a implementação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Para tornar um algoritmo reutilizável e seguro para execução paralela, qual prática relacionada a variáveis e efeitos colaterais deve ser adotada para evitar condições de corrida?
- A) Usar variáveis globais para compartilhar dados entre threads.
- B) Permitir efeitos colaterais para aumentar a flexibilidade do algoritmo.
- C) Eliminar variáveis globais e efeitos colaterais; usar funções puras e estado local por thread.
- D) Usar somente loops para execução paralela, ignorando variáveis.
- E) Criar apenas funções aninhadas dentro de outras funções.
✅ Resposta correta: alternativa C
Resolução passo a passo
- A questão pergunta qual prática torna um algoritmo reutilizável e seguro para execução paralela, evitando condições de corrida. Uma condição de corrida ocorre quando duas ou mais threads acessam e modificam o mesmo dado compartilhado ao mesmo tempo, e o resultado depende da ordem de execução.
- Os principais causadores desse problema são variáveis globais (estado compartilhado) e efeitos colaterais (funções que alteram estado externo). Eliminá-los reduz drasticamente o acesso concorrente a dados mutáveis.
- Funções puras, que dependem apenas de suas entradas e não alteram nada fora de si, e estado local por thread, que não é compartilhado, são as práticas que garantem segurança em paralelo e reutilização. A alternativa C reúne exatamente essas duas ideias, sendo a correta.
- Por que as outras estão erradas: A usa variáveis globais compartilhadas, justamente a principal fonte de condições de corrida. B defende efeitos colaterais, que tornam o comportamento imprevisível em paralelo. D sugere ignorar variáveis, o que não resolve o problema de dados compartilhados e não descreve uma prática de segurança. E trata de funções aninhadas, que não têm relação com a segurança em execução paralela.
- Conclusão: a alternativa C é a resposta correta, e ela coincide com o gabarito oficial.
💡 Dica: Considere as práticas de programação que minimizam efeitos colaterais.
Alternativa por alternativa
O aluno acredita que compartilhar dados por variáveis globais facilita a comunicação entre threads, sem perceber que o acesso simultâneo a esse mesmo dado é a causa típica de condições de corrida.
Por que engana: Confundir o uso de variáveis globais com a segurança em algoritmos paralelos, levando a condições de corrida.
O aluno associa efeitos colaterais à flexibilidade e supõe que mais flexibilidade traz mais segurança, ignorando que alterar estado externo torna o resultado dependente da ordem de execução das threads.
Funções puras não dependem nem alteram estado externo, permitindo execução concorrente sem conflitos por acesso a variáveis compartilhadas.
O aluno entende que paralelismo se resume a repetir loops e que tratar variáveis é irrelevante, não percebendo que é justamente o manejo de dados compartilhados que define a segurança da execução paralela.
O aluno confunde a organização estrutural do código (funções aninhadas) com a segurança em concorrência, supondo que a forma de organizar funções determina se há condição de corrida.
Raio-X da questão
algoritmos seguros
avaliacao
variáveis e efeitos colaterais · execução paralela
Revisar práticas de programação para evitar condições de corrida.
Confundir o uso de variáveis globais com a segurança em algoritmos paralelos, levando a condições de corrida.
ciencia_tecnologia
pensamento_critico
cientifico
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 decompor um algoritmo que atualiza a mesma variável de estado em várias subtarefas, que estratégia reduz efeitos…
- Em um algoritmo paralelo que atualiza contadores por turma, qual prática reduz a necessidade de locks ao manipular uma…
- Ao generalizar um algoritmo que processa uma coleção e acumula resultados, qual prática relativa à variável acumuladora…
- Em um programa com múltiplas threads que atualizam uma mesma variável compartilhada, qual mecanismo previne condições de…
- Em um algoritmo composto por várias funções, como deve ser declarada uma variável de configuração que não pode ser…
🔎 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
