C言語を用いたMPIによる並列化コードを作成について質問させて下さい。
以下のような擬似コードをデッドロックさせないで動作完了を保障する送信命令はないのでしょうか。

----------------------------
if( proc1 ){
x = 1;
send(x) [ => proc2 ]
recv(y) [ <= proc2 ]
print(x+y);
}
if( proc2 ){
y=2;
send(y) [ => proc1 ]
recv(x) [ <= proc1 ]
print(x+y);
}
----------------------------

特に上記の擬似コードのSendにMP_Send命令を用いても環境によっては動作するのですが、
これはMPIの規定を無視したコーディングになっています。確実な動作を保障できるSend命令はないでしょうか
よろしくお願いします。