Гранулярность параллелизма в Erlang — это процесс. Процесс — это действие / задача, которая выполняется одновременно и не зависит от других процессов. Эти процессы в Erlang отличаются от процессов и потоков, с которыми знакомы большинство людей. Процессы Erlang легки, работают в (памяти) изолированно от других процессов и планируются виртуальной машиной Erlang (VM). Время создания процесса очень мало, объем памяти только что созданного процесса очень мал, и на одной виртуальной машине Erlang могут работать миллионы процессов.
Процесс создается с помощью метода spawn. Общий синтаксис метода приведен ниже.
Синтаксис
spawn(Module, Name, Args)
параметры
-
Модуль — это предопределенное значение атома, которое должно быть? MODULE.
-
Имя — это имя функции, которая вызывается при определении процесса.
-
Args — это аргументы, которые необходимо отправить в функцию.
Модуль — это предопределенное значение атома, которое должно быть? MODULE.
Имя — это имя функции, которая вызывается при определении процесса.
Args — это аргументы, которые необходимо отправить в функцию.
Возвращаемое значение
Возвращает идентификатор процесса нового созданного процесса.
Например
Пример метода spawn показан в следующей программе.
-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_process_alive (Pid). Pid должен ссылаться на процесс в локальном узле.
Он преобразует идентификатор процесса в список.
Возвращает список с именами всех зарегистрированных процессов.
Один из наиболее часто используемых BIF, возвращает pid вызывающих процессов.
Это используется для регистрации процесса в системе.
Это называется whereis (Имя). Возвращает pid процесса, который зарегистрирован под именем.
Это используется для отмены регистрации процесса в системе.