GeraProva GeraProva Provas com IA para professores do Brasil
Computação3ª sérieBNCC EM13CO02Difícil⏱ medio

Dois handlers de evento atualizam simultaneamente a variável compartilhada 'contador' sem sincronização. Qual…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EM13CO02

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

Dois handlers de evento atualizam simultaneamente a variável compartilhada 'contador' sem sincronização. Qual problema isso causa e qual solução técnica é adequada?

  1. A) Causa erros lógicos; a solução é usar variáveis globais em vez de compartilhadas.
  2. B) Causa problemas de desempenho; solução é duplicar a variável para cada handler.
  3. C) Causa deadlock; a solução é aumentar a quantidade de memória disponível.
  4. D) Causa condição de corrida; corrigir com sincronização (locks/mutex) ou operações atômicas.
  5. E) Causa perda de dados; solução é reduzir o tamanho da variável compartilhada.

✅ Resposta correta: alternativa D

Resolução passo a passo

  1. Identifique o cenário. Dois handlers de evento (funções chamadas em resposta a eventos) escrevem na mesma variável 'contador' ao mesmo tempo, sem nenhum mecanismo de coordenação.
  2. Identifique o problema. Quando duas execuções concorrentes fazem leitura, incremento e escrita sobre a mesma variável, as operações podem se intercalar. Por exemplo, ambas leem o valor 5, ambas calculam 6 e ambas gravam 6, quando o correto seria 7. Esse fenômeno chama-se condição de corrida (race condition): o resultado depende da ordem de execução, que é imprevisível.
  3. Identifique a solução adequada. Para proteger a seção crítica usam-se locks ou mutex, que garantem que apenas uma execução por vez acesse a variável, ou operações atômicas, que executam leitura e escrita como uma única etapa indivisível.
  4. Verifique as demais alternativas.
  5. A: erros lógicos existem, mas o nome técnico do problema é condição de corrida, e usar variáveis globais não resolve nada, pois a variável continuaria compartilhada e sem proteção.
  6. B: não é questão de desempenho; duplicar a variável para cada handler faria cada um manter um contador próprio, o que quebra a contagem total.
  7. C: deadlock ocorre quando execuções se bloqueiam mutuamente esperando recursos, e não é o efeito típico desse cenário; aumentar memória não corrige a concorrência.
  8. E: não há perda de dados por tamanho da variável; reduzir o tamanho não impede a intercalação das operações.
  9. Conclusão. A alternativa correta é a D, que identifica corretamente a condição de corrida e apresenta a solução técnica com sincronização ou operações atômicas. O gabarito oficial está correto.

💡 Dica: Considere as implicações da concorrência em programação.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

O aluno percebe que há erro lógico, mas acredita que tornar a variável global resolve o problema, sem entender que o compartilhamento é justamente a origem da corrida.

Por que engana: Confundir a condição de corrida com deadlock, acreditando que o problema é a falta de memória.

B Erradaerro: Conceitual

O aluno associa concorrência a lentidão e imagina que o problema é de desempenho, achando que duplicar a variável eliminaria a interferência entre handlers.

C Erradaerro: Conceitual

O aluno confunde condição de corrida com deadlock e acredita que o problema é falta de recursos, por isso propõe aumentar a memória disponível.

D Correta

Atualizações concorrentes sem proteção podem sobrescrever resultados; locks ou operações atômicas garantem que cada atualização ocorra de forma indivisível.

E Erradaerro: Senso comum

O aluno supõe que o problema seja o tamanho da variável, imaginando que um valor grande demais se perde, sem considerar que a perda vem da leitura e escrita intercaladas.

Raio-X da questão

Dificuldade Difícil
Bloom Analisar
Leitura medio
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade dupla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ situacional🧩 desafio
🎯 Conceito central

concorrência em programação

📌 Objetivo

diagnostico

🧱 Pré-requisitos

sincronização em programação · variáveis compartilhadas

📚 Reveja

Revisar técnicas de sincronização em programação concorrente.

⚠️ Erro mais comum

Confundir a condição de corrida com deadlock, acreditando que o problema é a falta de memória.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cientifico

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.