Пид

Идентификатор процесса (актора). Синоним: Pid.

Пид это терм. Когда мы спауним задание, возвращается пид, и его можно присвоить какой-нибудь переменной.

Пид текущего актора (в котором находимся) можно узнать с помощью бифа self().

Пид используется для передачи сообщения актору, чьим идентификатором и является пид. Делается это с помощью оператора — восклицательного знака.

1> Some_pid = spawn(radio, loop, []).
Hello! I am radio.
<0.83.0>
2> Some_pid ! "Erlang/OTP 26.0 Release".
NEWS: "Erlang/OTP 26.0 Release".
"Erlang/OTP 26.0 Release"

В данном примере пид, связанный с переменной Some_pid выглядит как <0.83.0>.

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

У актора нет возможности узнать точно, от кого именно пришло сообщение. Если, например, отправитель хочет получить ответ, ему придётся вставить в своё сообщение свой пид, чтобы на него можно было ответить. Разумеется, можно в сообщении поставить и чужой пид, и тогда сообщение будет послано какому-то третьему актору.

В Эрланге система акторов строится, таким образом, на доверии. Если мы боимся, что какой-либо актор получит поддельное, нежелательное сообщение, надо обезопасить его другими средствами.


© Алексей Карманов, 2024.