typestar

spawn y receive en Elixir

Un proceso obrero, un mensaje a casa: el modelo del buzón en trece líneas.

# Every process owns a mailbox; send drops a message in, receive waits.
parent = self()

spawn(fn ->
  Process.sleep(50)
  send(parent, {:done, "hull scrubbed"})
end)

receive do
  {:done, chore} -> IO.puts("worker reports: #{chore}")
after
  1_000 -> IO.puts("no word from the worker")
end

Cómo funciona

  1. self() captura el pid del padre para que el obrero sepa adónde escribir.
  2. spawn arranca un proceso que duerme y luego manda a casa una tupla rotulada.
  3. receive bloquea hasta que el patrón coincide; after se rinde al segundo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
282
Tokens
61
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 52 segundos.

Escribe este fragmento

Paso 1 de 3 en Procesos; paso 22 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →