Код IT
← Каталог

Функции и процессы в Elixir — Функции и процессы — основа конкурентности

Фрагмент из «Функции и процессы в Elixir»: Функции и процессы — основа конкурентности.

Elixir main.ex
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