Imagem de fundo

Considere o seguinte algoritmo. 1) Criar uma lista de...

Considere o seguinte algoritmo.


1) Criar uma lista de arquivos para download.

2) Iniciar múltiplas threads para baixar os arquivos em paralelo.

3) Cada thread faz o download de um arquivo da lista.

4) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.

5) Exibir uma mensagem informando que todos os downloads foram concluídos.


Assinale a alternativa com o algoritmo corrigido para evitar a condição de corrida, sem abrir mão do paradigma de programação concorrente.


A

1) Criar uma lista de arquivos para download.

2) Fazer o download de cada arquivo, sequencialmente.

3) Exibir uma mensagem informando que todos os downloads foram concluídos.


B

1) Criar uma lista de arquivos para download.

2) Inicializar um mutex (exclusão mútua) para controlar o acesso à lista de arquivos.

3) Iniciar múltiplas threads para baixar os arquivos em paralelo.

4) Cada thread adquire o mutex (exclusão mútua) antes de acessar a lista, seleciona um arquivo disponível e libera o mutex (exclusão mútua).

5) Cada thread faz o download de um arquivo da lista.

6) Após o download, a thread adquire o mutex (exclusão mútua) novamente e atualiza a lista, marcando que o download foi efetuado, e então libera o mutex (exclusão mútua).

7) Exibir uma mensagem informando que todos os downloads foram concluídos.


C

1) Criar uma lista de arquivos para download.

2) Verificar se existe conexão com a Internet.

3) Iniciar múltiplas threads para baixar os arquivos em paralelo.

4) Cada thread faz o download de um arquivo da lista.

5) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.

6) Exibir uma mensagem informando que todos os downloads foram concluídos.


D

1) Criar uma lista de arquivos para download.

2) Iniciar múltiplas threads para baixar os arquivos em paralelo.

3) Verificar se o arquivo existe.

4) Cada thread faz o download de um arquivo da lista.

5) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.

6) Exibir uma mensagem informando que todos os downloads foram concluídos.


E

1) Criar uma lista de arquivos para download.

2) Iniciar múltiplas threads para baixar os arquivos em paralelo.

3) Verificar se o existe espaço disponível para o download.

4) Cada thread faz o download de um arquivo da lista.

5) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.

6) Exibir uma mensagem informando que todos os downloads foram concluídos.