Skip to main content

Concorrência e Paralelismo | Conceitos

  • Concorrência e Paralelismo | Conceitos

Paralelismo e simultaneidade são dois termos que muitas vezes criam confusão. Uma delas é gerenciar várias tarefas de uma só vez, misturando-as para otimizar o uso de recursos. O outro envolve a execução de várias tarefas simultaneamente, normalmente em vários processadores ou núcleos.

Como Rob Pyke (um dos criadores de golang) resumidamente colocou:" Simultaneidade é sobre lidar com muitas coisas de uma só vez. Paralelismo é sobre fazer muitas coisas ao mesmo tempo."

O que é simultaneidade?

Gerenciar várias tarefas em um único processador, misturando-as, dando a aparência de execução simultânea é chamado de simultaneidade.

Refere-se à capacidade do sistema de alternar entre várias tarefas em vez de executá-las de uma só vez, criando uma ilusão de execução paralela.

A simultaneidade utiliza efetivamente o tempo do processador, especialmente quando as tarefas devem esperar que outras sejam concluídas.

O que é paralelismo?

O paralelismo envolve a realização de várias tarefas simultaneamente. Isso funciona utilizando com eficiência vários processadores ou núcleos em um sistema de computação. A distinção entre simultaneidade e paralelismo tem um impacto direto no desempenho e na eficiência do aplicativo.

Como ele suporta a execução simultânea de tarefas, o paralelismo é particularmente útil para aplicativos com uso intenso de computação que distribuem tarefas entre vários processadores. A programação assíncrona é usada para alcançar a simultaneidade em ambientes single-threaded.

Essa abordagem permite que um programa inicie tarefas sem esperar que as anteriores sejam concluídas, gerenciando várias tarefas de uma maneira sem bloqueio.

Um ótimo exemplo é o Node.js, que lida com simultaneidade em um modelo de encadeamento único com retornos de chamada e loops de eventos. Enquanto isso, ambientes multi-threaded exploram simultaneidade e paralelismo. Eles facilitam a execução simultânea de tarefas em um único processador e a execução paralela verdadeira em vários processadores ou núcleos simultaneamente.

Linguagens de programação multi-threaded como C# fornecem a estrutura para os desenvolvedores aproveitarem esses recursos. Entender a concorrência e o paralelismo é uma distinção importante para a construção de soluções de software eficientes e de alto desempenho.

alt text