Programação concorrente e assíncrona

Docentes

Carlos MartinsJorge Martins e João Trindade

Carga Lectiva

4 semanas, 10h / semana (total de 40h)

Objectivos

Conhecer as características do suporte para concorrência dos ambientes de execução actuais, incluindo as interfaces assíncronas e o respectivo modelo de programação.

Obter ou reforçar a capacidade de desenhar soluções com múltiplos fios de execução, simultaneamente eficientes e correctas.

Resultados da aprendizagem

  • Capacidade de desenvolver sistemas com desempenho proporcional ao número de núcleos de processamento disponíveis em cada máquina.
  • Saber escolher, nos diversos níveis de abstracção, os mecanismos de sincronização adequados a cada situação.
  • Utilizar interfaces programáticas assíncronas correcta e adequadamente, em particular para maximizar a capacidade de atendimento de um servidor.
  • Conhecer os aspectos essenciais dos modelos de memória das plataformas actuais e saber identificar situações potencialmente críticas relacionadas com os mesmos.

Programa

  • Threads e sincronização numa perspectiva não-conceptual :
    • contextos de execução, esperas passivas e exclusão na biblioteca uthread-m ;
    • custos associados a threads e primitivas de sincronização do sistema operativo ;
  • Threads e sincronização no ambiente virtual de execução :
    • Threads e monitores intrínsecos ;
    • Sincronizadores da biblioteca standard ;
    • Prevenção de data races com imutabilidade e confinamento ;
    • AppDomains como unidade de isolamento.
  • Gestão de threads em pool :
    • Critérios relevantes para a gestão de um pool de threads ;
    • Input/output assíncrono e IO completion ports ;
    • Thread pools disponíveis e serviços que os utilizam.
  • Modelo de programação assíncrono :
    • Separação de operação em par Begin/End e formas de rendezvous ;
    • Operações assíncronas no pipeline ASP.NET ;
    • Operações assíncronas em serviços WCF.
  • Modelos de memória e sincronização sem locks :
    • Garantias relativas aos valores observados pelas operações de leitura de dados ;
    • Operações com semântica de acquire e de release, incluindo operações atómicas;
    • Análise de exemplos de sincronização sem locks.
  • Task Parallel Library (TPL)

Comments are closed.