← Каталог
Функции и процессы в Elixir — Функции и процессы — основа конкурентности
Фрагмент из «Функции и процессы в Elixir»: Функции и процессы — основа конкурентности.
defmodule EchoServer do
def start do
spawn(&loop/0)
end
defp loop do
receive do
{:echo, msg, caller} ->
send(caller, {:reply, msg})
loop() # Рекурсивный вызов для продолжения работы
:stop ->
IO.puts("Сервер остановлен")
# Без рекурсивного вызова — процесс завершается
end
end
end
# Использование —
server = EchoServer.start()
send(server, {:echo, "Привет!", self()})
receive do
{:reply, msg} -> IO.puts("Получено: #{msg}")
end defmodule EchoServer do
def start do
spawn(&loop/0)
end
defp loop do
receive do
{:echo, msg, caller} ->
send(caller, {:reply, msg})
loop() # Рекурсивный вызов для продолжения работы
:stop ->
IO.puts("Сервер остановлен")
# Без рекурсивного вызова — процесс завершается
end
end
end
# Использование —
server = EchoServer.start()
send(server, {:echo, "Привет!", self()})
receive do
{:reply, msg} -> IO.puts("Получено: #{msg}")
end