Communication between processes takes place by calls to send and recive primitives (i.e functions). Message passing may be either block or non block also called as asynchronous and asynchronous.
Blocking send : The sending process is blocked until the receiving process or the mailbox recive the message. Non-Block send : The sending process send the message and resumes operation. Blocking receive : The receiver blocks until a message is available. Non blocking receivier: The receiver receviees either a vaild message or a null.