The Code Codex
Tema
← Notas / Concorrência

nota · vídeo14 out 2024 · 1 min

Concorrência não é paralelismo

Notas sobre o vídeo

Palestra de Rob Pike, um dos criadores do Go, na conferência Waza do Heroku em 2012.

  • “O mundo não é orientado a objetos e sim paralelo”

  • Concorrência é sobre lidar com várias coisas ao mesmo tempo.

  • Paralelismo é sobre fazer várias coisas ao mesmo tempo.

  • Um é sobre estrutura, o outro sobre execução.

Concorrência: 1 núcleo, tarefas intercaladas

Núcleo 1

A

B

A

B

Paralelismo: 2 núcleos, ao mesmo tempo

Núcleo 1

A

A

A

Núcleo 2

B

B

B

Concorrência: 1 núcleo, tarefas intercaladas

Núcleo 1

A

B

A

B

Paralelismo: 2 núcleos, ao mesmo tempo

Núcleo 1

A

A

A

Núcleo 2

B

B

B

  • Concorrência provê uma forma de estruturar a solução para um problema, que pode ou não ser executada em paralelo.
    • Ex.: um sistema operacional gerencia mouse, teclado, monitor e alto-falante ao mesmo tempo. Com um ou vários núcleos, o modelo de programação é concorrente, podendo ou não ser paralelo.
  • Concorrência é a forma de estruturar um programa, quebrando-o em partes que podem ser executadas de forma independente.
  • Um programa bem estruturado de forma concorrente pode ganhar paralelismo de graça quando há mais núcleos disponíveis; o contrário não é verdade.

Em Go, isso aparece nas goroutines e channels (guia de Go); em Java, nas virtual threads.