The sending process sends a request to communicate to the receiving process. When the receiving process encounters the target receive, it responds to the request. The sending process upon receiving this response initiates a transfer operation. Since there are no buffers used at either sending or receiving ends, this is also referred to as a non-buffered blocking operation. |
1 P0 P1 2 3 send(&a, 1, 1); send(&a, 1, 0); 4 receive(&b, 1, 1); receive(&b, 1, 0);
the send at waits for the matching receive at whereas the send at process waits for the corresponding receive at , resulting in an infinite wait. |
1 P0 P1 2 3 receive(&a, 1, 1); receive(&a, 1, 0); 4 send(&b, 1, 1); send(&b, 1, 0);