Elixir Paraná Profile picture
Mar 4 18 tweets 5 min read
Para aprender o que é um processo em Elixir, antes você tem que saber o que é uma função.

Por exemplo, IO.puts/1 é uma função que escreve algo na tela. A função se chama puts, ela está no módulo IO (de entrada I e saída O) e ela recebe um argumento:
iex(1)> IO.puts("Adolfo")
Adolfo
:ok

Se tudo dá certo ela retorna o átomo :ok.
Uma função que te permite gerar (tradução talvez imprecisa de spawn, em inglês) é Kernel.spawn/1.

Novamente, o nome dela é spawn, ela faz parte do módulo Kernel e recebe um argumento.
Eu consigo fazer
Kernel.spawn(IO.puts("Adolfo"))
?
Não!
Vamos começar simplificando: toda função que faz parte do módulo Kernel não precisa do nome do módulo antes.
Basta chamar
spawn(IO.puts("Adolfo"))

Vai continuar errado mas com menos letras.
O que Kernel.spawn/1 recebe é uma função de aridade 0, ou seja, que não recebe nenhum argumento.
Como fazemos isso?
Assim:

fn -> 1 end

A função acima não tem nome (anônima) e retorna 1.

Mas veja na imagem que se você dá um spawn nela, nada de interessante acontece:
Em primeiro lugar, veja que
fn -> 1 end
retornou uma espécie de "código" que identifica a função:

#Function<43.3316493/0 in :erl_eval.expr/6>
E
spawn(fn -> 1 end)
retornou um PID, um Process Identifier, um identificador de processo:
#PID<0.120.0>
Eu posso atribuir este PID a uma variável:
iex(1)> pid = spawn(fn -> 1 end)
#PID<0.110.0>

E depois perguntar se o processo que foi gerado está vivo:

iex(2)> Process.alive?(pid)
false

Não está pois era uma função muito rápida, que só retornava 1.
Eu posso, por exemplo, fazer o processo "dormir" por 10 segundos antes de retornar o 1.
iex(3)> pid = spawn(fn -> Process.sleep(10000); 1 end)
#PID<0.113.0>

Se rapidamente eu pergunto se o processo, cujo identificador está na variável pid, está vivo, a resposta é sim.
iex(4)> Process.alive?(pid)
true

Mas se pergunto novamente depois de 10 segundos, a resposta será não.

iex(5)> Process.alive?(pid)
false
Seu eu fizer isto aqui
iex(6)> pid = spawn(fn -> Process.sleep(10000); IO.puts("Adolfo") end)
#PID<0.117.0>
Adolfo
vai demorar 1 segundos para "Adolfo" ser escrito na tela.
Já se eu fizer isto, será imediato para "Adolfo" aparecer na tela.

iex(7)> pid = spawn(fn -> IO.puts("Adolfo") end)
Adolfo
#PID<0.119.0>
Enfim, isto é somente o básico do básico. Leia mais em
elixirschool.com/pt/lessons/int…
Ou no Getting Started da linguagem Elixir elixir-lang.org/getting-starte…
Fiz tudo isso sem sequer mencionar send e receive.
O link do post no DevTo, com algumas correções em relação ao fio, está em dev.to/elixir_utfpr/o…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Elixir Paraná

Elixir Paraná Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @elixir_utfpr

Apr 6, 2022
Elixir é bem ameaçador mesmo...
"Esta conta foi encerrada devido a violações recorrentes ou graves da política do YouTube que proíbe conteúdo criado para assediar, intimidar ou ameaçar."
youtube.com/c/AdolfoNeto
Acho que a mensagem só aparece neste link youtube.com/channel/UCn5ML…
Vou deixar aqui o texto do email que o @YouTubeBrasil me mandou após eu publicar um vídeo sobre o Kernel.then/2 do Elixir:
"Revisamos seu conteúdo e encontramos violações graves ou recorrentes das nossas diretrizes da comunidade. Por isso, removemos seu canal do YouTube.
(...)"
Read 18 tweets
Feb 7, 2022
Você tem alguma pergunta sobre os cursos de graduação em computação na UTFPR?
Pergunta-me que te respondo!
Atuamos em todo o Paraná!
Temos Engenharia de Computação em
Apucarana, Cornélio Procópio, Curitiba, Pato Branco e Toledo

TODOS 100% GRATUITOS!
utfpr.edu.br/cursos/graduac…
Sistemas de Informação temos apenas em Curitiba portal.utfpr.edu.br/cursos/graduac…
Read 13 tweets
Oct 28, 2021
Vou assistir agora a palestra do @DNAutics na ElixirConf 2021: Zig ama Elixir.
Pra começar, nem sei direito o que é Zig.
Mas gostei de saber que a formação do Isaas é em bioquímica.
Ele tem um canal no YouTube: youtube.com/channel/UCarZZ…
Acabei de assinar. 353 inscritos agora.
Isaac trabalha com Elixir desde 2016.
A empresa em que Isaac trabalha é vic.ai e está contratando!

PS: o vídeo está bem popular. 1225 visualizações agora
Read 23 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(