We have learned that actors communicate by sending messages. While actors running on the same machine can access shared parts of memory in the presence of proper synchronization, sending messages allows isolating the actor from the rest of the system and ensures location transparency. The fundamental operation that allows you to send a message to an actor is the
! operator. We have learned that the
! operator is a non-blocking operation: sending a message does not block the execution of the sender until the message is delivered. This way of sending messages is sometimes called the
fire-and-forget pattern, because it does not wait for a reply from the message receiver, nor does it ensure that the message is delivered.
Sending messages in this way improves the throughput of programs built using actors, but can be limiting in some situations. For example, we might want to send a message and wait for the response from the target. In this section, we learn about...