Treading vs Multiprocessamento vs Programação Assíncrona
Threading, multiprocessamento e programação assíncrona são todos métodos para estabelecer paralelo em um computador, mas são maneiras de lidar com várias tarefas ao mesmo tempo. Nesta postagem do blog, veremos a lógica por trás deles. Também veremos as diferenças.
Tópicos
Threading é o processamento de vários threads dentro de um único processo .
Cada thread compartilha a mesma memória e recursos, mas pode executar várias tarefas ao mesmo tempo.
Os encadeamentos são leves e podem ser produzidos e excluídos rapidamente, mas podem causar condição de corrida , impasses e problemas de acesso a recursos compartilhados .
Quando ocorrem as condições de corrida?
Uma condição de corrida é uma situação que pode ocorrer em programação simultânea ou paralela quando vários threads tentam acessar uma variável compartilhada ao mesmo tempo.
O primeiro thread lê a variável e o segundo thread lê o valor da variável. O primeiro e o segundo threads executam suas ações no valor, correndo para determinar qual thread pode gravar o valor na variável compartilhada primeiro. Como o encadeamento está escrevendo sobre o valor que o encadeamento anterior escreveu, o valor do encadeamento que publica seu valor por último é mantido.
Quando ocorrem impasses?
Um impasse ocorre quando dois threads bloqueiam variáveis diferentes ao mesmo tempo e tentam bloquear a variável que o outro thread já bloqueou. Como resultado, cada thread encontra um erro e encerra a execução.
Multiprocessamento
O multiprocessamento está executando vários processos para várias tarefas com seu próprio espaço de memória e recursos . Os processos podem se comunicar uns com os outros por meio da comunicação entre processos (IPC), mas não podem acessar a memória uns dos outros diretamente. O multiprocessamento é mais forte que o threading, mas tem um custo maior, pois precisa da criação e gerenciamento de processos separados.
IPC
IPC é um termo que significa “Comunicação entre processos” e refere-se às técnicas que os sistemas operacionais utilizam para permitir que diferentes processos se comuniquem entre si.
Em um sistema operacional moderno, vários processos podem ser executados simultaneamente e executar suas próprias tarefas com um espaço de memória e recurso diferentes. Mas há situações em que esses processos individuais precisam trocar dados ou se comunicar entre si. O IPC fornece uma maneira para isso.
Programação assíncrona
A programação assíncrona está usando um único thread para lidar com várias tarefas simultaneamente, parando e reiniciando-as conforme necessário. Isso geralmente é feito usando corrotinas, que permitem multitarefa cooperativa. A programação assíncrona é ideal para atividades limitadas por E/S nas quais o programa gasta uma quantidade significativa de tempo esperando a conclusão dos processos de entrada/saída.
Por exemplo, se você quiser abrir um arquivo, seu programa continuará enquanto o arquivo estiver aberto (a menos que outras tarefas precisem abrir o arquivo)





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)