Programação Concorrente e Assíncrona em .NET

Classificado em Computação

Escrito em em português com um tamanho de 2,97 KB.

Exceção Simultânea Apenas Aparente

O sistema operativo comuta a execução entre as diversas threads. O Time slice é o tempo de execução de cada thread.

Exemplos de Execução Concorrente

  • Navegador de InternetThreads para carregar ou mostrar as várias partes de uma página Web;
  • Acesso ao disco - Operação lenta e threads para ler/processar os dados.

O que São Monitores?

Um monitor representa uma secção de código que apenas é executado por uma thread de cada vez.

Explique os Tipos de Secção Crítica

Lock contém o método Thread safe que pode ser executado por duas ou mais threads em simultâneo. A Secção crítica pode ser executada apenas por uma thread de cada vez: lock(typeof(NomedaClasse)) { ... }

Classe Mutex -> Objeto que permite obter exclusão mútua na execução de secções críticas: Semelhante ao lock, mas sob a forma de uma classe.

Explique a Classe Semaphore

Um semáforo é um objeto de sincronização que permite controlar o acesso concorrente a um conjunto de recursos. Quando criado, deve definir-se o valor inicial e o valor máximo que o mesmo pode tomar.

Esta classe contém duas operações:

  • WaitOne():
    • Quando o Semáforo > 0 - Decrementa o seu valor e a execução da thread continua normalmente;
    • Quando o Semáforo = 0 - Thread bloqueia e fica em lista de espera.
  • Release():
    • Quando o Semáforo = 0 - Incrementa semáforo e se existirem threads bloqueadas, uma delas é desbloqueada e tenta operação WaitOne();
    • Quando o Semáforo > 0 - Incrementa semáforo e execução da thread prossegue normalmente.

Indique Outros Objetos de Sincronização

  • AutoResetEvent e ManualResetEvent -> Classes utilizadas para notificar diferentes threads que um certo acontecimento ocorreu, podendo estas retomar a sua execução.
  • ThreadPool -> Classe que representa um conjunto de threads, no estado bloqueado, disponíveis para realizar trabalho.
  • ReaderWriterLock -> Classe que permite sincronizar acessos, entre threads de leitura e escrita, a determinada informação.
  • Timer -> Permite executar um método de um objeto, de forma periódica.

O que é a Programação Assíncrona?

Na plataforma .NET 4.5, surgiu uma abordagem que simplifica a programação assíncrona, permitindo manter o código da aplicação com uma estrutura lógica semelhante ao código síncrono. Os métodos assíncronos são definidos utilizando as palavras-chave async e await.

Entradas relacionadas: