Paralelismo, Concorrência & Memes

Desenvolvedor Back-End

Co-Org @BackEndBrasil

@onhernandes | hernandes.io

Por que falar de paralelismo e concorrência?

homem-aranha sentado na cadeira, com as pernas esticadas e apoiadas na janela com a mão no queixo pensativo

É um assunto fácil, mas a maioria do conteúdo é técnico demais e às vezes isso mais atrapalha do que ajuda

liza com os braços abertos indicando que o assunto é óbvio: é difícil de entender porque as explicações são difíceis

Era uma vez...

captura de tela de um trecho de código em PHP que executa o Artisan via shell usando a função exec();

Isso é paralelismo. E funciona. E tem muito sistema no ar usando isso. Mas pode ter formas melhores

foto de um hamster olhando para trás com os olhos cheios de lágrimas

Entender memes NÃO é difícil!

foto do Ronaldinho Gaúcho sorrindo, em um momento que ele pede a jornalista em namoro

minha história com o Choque de Cultura

Rogeirinho do Choque de Cultura tapando os ouvidos

Então o que realmente é paralelelismo isso aí?

captura de tela do site da wikipedia falando sobre paralelismo

É quando você executa a mesma operação em CPUs diferentes

Sam e Jean, do Supernatural, fugindo lado a lado

paralelismo != multi threading

personagem dos Simpsons entrando em uma casa armado e se deparando com uma cópia sua também armada

multi threading

foto de uma garota bebendo de vários copos com canudos

e o que é concorrência?

exemplo de várias tarefas sendo executadas em ordem

Exemplos

foto de apresentador da Globo entusiasmado

Concorrência com PHP

exemplo de código assíncrono em PHP usando a biblioteca amphp

Paralelismo com PHP + comandos shell

captura de tela de um trecho de código em PHP que executa o Artisan via shell usando a função exec();

Concorrência com NodeJS

captura de tela de um trecho de código em JavaScript com NodeJS notificando vários usuários que seu produto já chegou usando promessas

Paralelismo com NodeJS

captura de tela de um trecho de código em JavaScript com NodeJS usando o módulo nativo cluster pra executar o mesmo script em outras CPUs

Concorrência com Python

captura de tela de um trecho de código em Python usando o módulo concurrent para trabalhar com concorrência

Paralelismo com Python

captura de tela de um trecho de código em Python usando o módulo multiprocessing para trabalhar com paralelismo

Pontos positivos:

  • leitura de disco
  • processamento de dados em massa(famosos workers)
  • melhorar a performance no ponto de vista do usuário(experiência)

Pontos negativos:

  • pode custar mais do que você gostaria
  • desnecessário na maioria das vezes
  • consome mais recursos e pode afetar outras coisas(efeitos colaterais)

agora você pode dizer que sabe sobre memes

e que também sabe sobre paralelismo & concorrência

foto de um pato com o pelo penteado

~ extra

  • leia mais sobre locking
  • brinque com algumas coisas simples
  • aplique no seu dia a dia com cuidado

fim!

foto de várias freiras com óculos juntas