Computing systems model the world, and the world contains actors that execute independently of, but communicate with each other. In modelling the world, many (possibly) parallel executions have to be composed and coordinated, and that's where the study of concurrency comes in. In the shared memory model of concurrency, concurrent modules interact by reading and writing shared objects in memory. In the message-passing model, concurrent modules interact by sending messages to each other through a communication channel. Modules send off messages, and incoming messages to each module are queued up for handling