The MPI standard defines different send modes, normal mode, synchronous mode, buffered mode and ready mode. TPO++ provides the same modes in the communicator class. The communicator method send corresponds to normal mode. For the other modes, TPO++ provides the methods ssend, bsend and rsend, having the same semantics like the MPI calls.
To send in buffered mode, the user previously has to provide a user-space buffer to TPO++. To do this, the class TPO::Buffer can be used to create a buffer, which can be made available for TPO++ using Buffer_attach and removed using Buffer_detach. The next example shows how to send in buffered mode:
TPO::Buffer my_buffer(1024); if (TPO::CommWorld.rank()==0) { // send in buffered mdoe TPO::Buffer_attach(my_buffer); TPO::CommWorld.bsend(some_date, 1); TPO::Buffer_detach(); } else { TPO::CommWorld.recv(some_data); }