Dissecando a concorrência do 'Elixir'
(underjord.io)- O texto discute a experiência do autor com a linguagem de programação Elixir, com foco em seus recursos de concorrência e paralelismo.
- O autor usa Elixir como linguagem principal há 5-6 anos e reconhece seu desempenho e suas poucas desvantagens.
- O autor compara o modelo de concorrência do Elixir com PHP e Python, argumentando que o modelo de concorrência do PHP depende do servidor web, enquanto o Python enfrenta dificuldades com concorrência por causa do Global Interpreter Lock (GIL).
- Elixir é construído sobre Erlang e a máquina virtual do Erlang (BEAM), projetada para executar um grande número de processos leves, fornecendo a base para concorrência e paralelismo.
- Ao iniciar, a BEAM cria threads para os escalonadores e, por padrão, lida com o agendamento de processos com uma para cada núcleo de CPU disponível.
- O autor explica que as características de programação funcional imutável do Elixir e do Erlang foram uma escolha prática para alcançar altos níveis de concorrência e paralelismo.
- Em Elixir, os processos não compartilham estado e só podem se comunicar de forma assíncrona por passagem de mensagens, garantindo execução concorrente e paralela com segurança.
- O autor observa que, ao escrever código em Elixir, não é preciso se preocupar tanto com esses princípios básicos, já que a maioria das requisições web acontece dentro de um único processo.
- Elixir oferece um mecanismo async/await para tarefas concorrentes, implementado no módulo Task, e há a função
Task.async_stream, que executa uma Task para cada item enumerável. - O autor conclui que as excelentes opções de concorrência e paralelismo do Elixir e do Erlang não foram algo pensado depois, mas sim construídas na base do runtime, de modo que a concorrência na BEAM não é perigosa nem difícil.
Ainda não há comentários.