Что такое процесс? Это выполнение пассивного набора инструкций, которые содержит компьютерная программа. Процесс содержит программный код и его активность.

Процесс может находиться в разных состояниях: отправка, получение и выполнение. Возьмем, к примеру, раздевалку, вы можете хранить вещи и убирать вещи из раздевалки. Давайте придумаем, как мы можем справиться с выполнением этих шагов, используя процессы Erlang.

Во-первых, мы создадим список предметов (активность пользователя), которые может хранить наша раздевалка (модуль, который уже существует в вашей программе). Далее нужно будет поместить/сохранить (уже существующая функция в нашем модуле) предметы в шкафчике, как мы выполним этот шаг? отправьте {pid msg} элемента, который вы хотите отобразить среди сохраненных элементов, который получен в нашем почтовом ящике;

store(Pid, Item) ->

Pid ! {self(), {store, item}},

receive

{Pid, Msg} -> Msg

end.

Предмет хранится в нашем почтовом ящике, и теперь система ожидает любых звонков от пользователей, чтобы удалить/взять любой предмет из раздевалки. Отправленный элемент сопоставляется с уже существующим элементом, если он доступен, если нет, мы возвращаем сообщение об ошибке.

take(Pid, Item) ->

Pid ! {self(), {take, Item}},

receive

{Pid, Msg} -> Msg

end.

Примечание:

Сообщения в почтовом ящике извлекаются в том порядке, в котором они были получены, что больше похоже на принцип «первым пришел — первым обслужен», но в случае, когда определенное сообщение 2 (PID2) получено, а (PID 1) сообщение 1 не было получено, приоритет имеет передается сообщению 2 (PID 2). Поэтому наш почтовый ящик теперь будет иметь Msg1, Msg3, Msg 4 …..

В случае, когда в почтовом ящике слишком много сообщений и, следовательно, выполнение различных действий замедляется, мы можем создать функцию, которая удаляет сообщение или сохраняет его в другом месте для дальнейшего использования.

Как ты был 😎