In the message-passing model, there exists a set of tasks that use their own local memories during computation. Multiple tasks can reside on the similar physical machine as well across an arbitrary number of machines. Tasks replace data by sending and receiving messages. In this model, data transmit usually needs cooperation between the operations that are performed by every process. For example, a send operation must have a matching receive operation.