Elixir processes are isolated, lightweight threads of execution that communicate by message passing. Each process has its own mailbox to receive messages and state to maintain as it processes messages. Messages can be sent either asynchronously with no reply expected, or synchronously to request a response. If a process does not respond within a specified time, the calling process will continue execution according to how it is programmed to handle non-responses. Processes may have multiple messages in their mailbox that are processed sequentially and can change state based on the messages received. If a process dies unexpectedly, it notifies its supervisor which decides how to handle the failure based on the restart strategy.
4. Erlang Virtual MachineOS
Process (1)
Process (2)
Process (3)
….
Process (n)
Erlang VM
-- pid 109
-- pid 206
-- pid 3114
-- ...
STATE
Mailbox
CALCULATION FUNCTIONS
(MSG LISTENERS)
(pid 109)
@mustafaturan
5. Sends a message with no-
reply
Christmas sales up to %90,
come to our new store and
start shopping!
(GenServer.cast)
Company A girl
@mustafaturan
Actor Communication
Basic / one direction
6. Sends a message
how r u?
Responses to message
Good! How r u?
(GenServer.call)
Mustafa Gozde
@mustafaturan
Actor Communication
Basic / bi-directional
7. Sends a message
Mustafa Gozde
is unreachable!
Changed her number
or
Out of charge
or
Airplane mode
Mobile Operator
Phone number is not
available
(GenServer.call)
@mustafaturan
Actor Communication
No process
8. Sends a message
(GenServer.call)
Mustafa has a TTL of 1 minute! Also knows the message delivered
She did not replied in one minute!
What will Mustafa do?
Mustafa Gozde
Send another message?
Try to reach her from other
channels / call her?
Go crazzy ????
He will behave like how you code it!
@mustafaturan
Actor Communication
TTL / bi-directional
9. Sends a message#1
Mustafa
Sends a message#2
Mustafa’s Message Box(1)
---------------------------------------
Message #1 from Gozde
Gozde
Other girl
Mustafa’s Message Box(2)
---------------------------------------
Message #1 from Gozde(*)
Message #2 from Other Girl
Mustafa’s Message Box(3)
---------------------------------------
Message #2 from Other Girl
Mustafa’s Message Box(4)
---------------------------------------
*Processing not finished yet
@mustafaturan
Responses to
message #1
Responses to
message #2
Mustafa may change its state depending on
messages.
10. Actor dies?
What happens if the actor dies?
Sends message to its supervisor
- Down/Exit:
- Depending on strategy, supervisor decide what to do.
- Could handle its own crash by catching the ‘exit’ signal