Учебники

Эрланг — Процессы

Гранулярность параллелизма в Erlang — это процесс. Процесс — это действие / задача, которая выполняется одновременно и не зависит от других процессов. Эти процессы в Erlang отличаются от процессов и потоков, с которыми знакомы большинство людей. Процессы Erlang легки, работают в (памяти) изолированно от других процессов и планируются виртуальной машиной Erlang (VM). Время создания процесса очень мало, объем памяти только что созданного процесса очень мал, и на одной виртуальной машине Erlang могут работать миллионы процессов.

Процесс создается с помощью метода spawn. Общий синтаксис метода приведен ниже.

Синтаксис

spawn(Module, Name, Args)

параметры

  • Модуль — это предопределенное значение атома, которое должно быть? MODULE.

  • Имя — это имя функции, которая вызывается при определении процесса.

  • Args — это аргументы, которые необходимо отправить в функцию.

Модуль — это предопределенное значение атома, которое должно быть? MODULE.

Имя — это имя функции, которая вызывается при определении процесса.

Args — это аргументы, которые необходимо отправить в функцию.

Возвращаемое значение

Возвращает идентификатор процесса нового созданного процесса.

Например

Пример метода spawn показан в следующей программе.

Live Demo

-module(helloworld). 
-export([start/0, call/2]). 

call(Arg1, Arg2) -> 
   io:format("~p ~p~n", [Arg1, Arg2]). 
start() -> 
   Pid = spawn(?MODULE, call, ["hello", "process"]), 
   io:fwrite("~p",[Pid]).

Следующие вещи необходимо отметить о вышеупомянутой программе.

  • Функция с именем call определена и будет использоваться для создания процесса.

  • Метод spawn вызывает функцию call с параметрами hello и process.

Функция с именем call определена и будет использоваться для создания процесса.

Метод spawn вызывает функцию call с параметрами hello и process.

Выход

Когда мы запустим вышеуказанную программу, мы получим следующий результат.

<0.29.0>"hello" "process"

Теперь давайте посмотрим на другие функции, которые доступны с процессами.

is_pid

Этот метод используется, чтобы определить, существует ли идентификатор процесса.

is_process_alive

Это называется is_process_alive (Pid). Pid должен ссылаться на процесс в локальном узле.

pid_to_list

Он преобразует идентификатор процесса в список.

зарегистрированный

Возвращает список с именами всех зарегистрированных процессов.

сам

Один из наиболее часто используемых BIF, возвращает pid вызывающих процессов.

регистр

Это используется для регистрации процесса в системе.

где

Это называется whereis (Имя). Возвращает pid процесса, который зарегистрирован под именем.

разрегистрировать

Это используется для отмены регистрации процесса в системе.