concorrencia101
  • Introdução
  • First things first
  • Agradecimentos
  • Parte I - Concorrência no sistema operacional
    • O que é o programa no sistema operacional
    • Escalonador preemptivo de tarefas
    • Uma nota sobre escalonamento cooperativo
    • Propriedades de um processo
    • Clone de processo (forking)
    • Clone leve de processo (thread)
    • Todo processo tem uma thread principal
    • Uma nota sobre paralelismo
    • Principais desafios em cenário de concorrência
      • Race condition
      • Sincronização com locks
      • Modelo de atores
    • E o I/O?
      • Latência de CPU vs Latência de I/O
      • Chamadas bloqueantes
      • Chamadas não-bloqueantes
      • Assincronismo e escalonamento cooperativo
    • Vamos colocar em prática...
  • PARTE II - Concorrência em diferentes linguagens
    • Definindo ambientes de execução
    • Concorrência em C
      • Forking de processos
      • Threads
      • Race condition e sincronização de threads com mutex
      • Desafios com o uso de threads
      • Thread Pool em C
      • Green threads
      • Modelo de Atores
      • Trabalhando com I/O
    • Concorrência em Ruby
      • Forking de processos
      • Threads
      • Race condition, YARV, GVL e paralelismo em Ruby
      • Modelo de Atores
      • Trabalhando com I/O
Powered by GitBook
On this page
  1. Parte I - Concorrência no sistema operacional

Vamos colocar em prática...

Até o momento, exploramos os conceitos fundamentais para compreender concorrência. Esses tópicos incluem:

  • O que é um programa a nível de SO: como os programas interagem com o SO

  • Propriedades de um processo: estrutura, estado e formas de comunicação entre processos

  • Escalonamento preemptivo de tarefas: como o SO gerencia a execução e troca de tarefas

  • Clone de processos (forking): como novos processos são criados

  • Clone de processos leves (threading): diferenças entre criação de processos e threads

  • Uma nota sobre paralelismo: concorrência não é paralelismo

  • Desafios em cenário de concorrência: problemas comuns como condições de corrida e data races

  • I/O síncrono e assíncrono: como estas operações afetam o desempenho e design de sistemas concorrentes

Com isto tudo que foi passado, temos já o conhecimento necessário para entrarmos na segunda parte deste guia, trazendo exemplos práticos que implementam concorrência em diversas linguagens.

Não se preocupe, irei trazer exemplos auto-contidos e didáticos de forma que não será necessário entender todas as linguagens de forma profunda.

PreviousAssincronismo e escalonamento cooperativoNextDefinindo ambientes de execução

Last updated 5 months ago