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

Introdução

NextFirst things first

Last updated 4 months ago

Já faz algum tempo que estou querendo escrever sobre concorrência, mas minha procrastinação minha rotina não deixou. E também porque estive ocupado o primeiro semestre de 2024 criando de .

Também não sei porque

Enfim, concorrência (plus paralelismo) é um assunto que gosto de explorar e conversar sobre, portanto chegou a hora de compartilhar um pouco da visão que tenho com relação a este tema.

Vá com moderação, não espere um guia acadêmico, formalidade e nem um tutorial rápido. O que pretendo aqui é trazer fundamentos de concorrência de forma acessível e didática, buscando lá na superfície do sistema operacional como isto funciona, tanto a nível de CPU, memória e I/O; e também como diferentes linguagens (leia-se runtimes) implementam concorrência.

E claro, não posso escrever um guia sobre concorrência sem começar com o famoso clichê: concorrência não é paralelismo.

Pra não mencionar o assincronismo, que também vamos abordar ao longo deste guia

Se você sempre se deparou com explicações confusas, apresentadas de forma inacessível, ou então carregadas de jargões e até mesmo analogias que mais atrapalham que ajudam - calma gente, eu gosto de analogias, mas boas analogias -, então este guia é pra você.

uma
saga
artigos
sobre
Assembly
x86
Page cover image