NAME¶
pvm_send - Immediately sends the data in the active message buffer.
SYNOPSIS¶
C int info = pvm_send( int tid, int msgtag )
Fortran call pvmfsend( tid, msgtag, info )
PARAMETERS¶
- tid
- Integer task identifier of destination process.
- msgtag
- Integer message tag supplied by the user. msgtag should be >= 0.
- info
- Integer status code returned by the routine.
DESCRIPTION¶
The routine
pvm_send sends a message stored in the active send buffer to
the PVM process identified by
tid. msgtag is used to label the
content of the message. If pvm_send is successful,
info will be 0. If
some error occurs then
info will be < 0.
The pvm_send routine is asynchronous. Computation on the sending processor
resumes as soon as the message is safely on its way to the receiving
processor. This is in contrast to synchronous communication, during which
computation on the sending processor halts until the matching receive is
executed by the receiving processor.
The PVM model guarantees the following about message order. If task 1 sends
message A to task 2, then task 1 sends message B to task 2, message A will
arrive at task 2 before message B. Moreover, if both messages arrive before
task 2 does a receive, then a wildcard receive will always return message A.
Terminating a PVM task immediately after sending a message or messages from it
may result in those messages being lost. To be sure, always call pvm_exit()
before stopping.
EXAMPLES¶
C:
info = pvm_initsend( PvmDataDefault );
info = pvm_pkint( array, 10, 1 );
msgtag = 3 ;
info = pvm_send( tid, msgtag );
Fortran:
CALL PVMFINITSEND(PVMRAW, INFO)
CALL PVMFPACK( REAL8, DATA, 100, 1, INFO )
CALL PVMFSEND( TID, 3, INFO )
ERRORS¶
These error conditions can be returned by
pvm_send
- PvmBadParam
- giving an invalid tid or a msgtag.
- PvmSysErr
- pvmd not responding.
- PvmNoBuf
- no active send buffer. Try pvm_initsend() before send.
SEE ALSO¶
pvm_initsend(3PVM), pvm_mcast(3PVM), pvm_pack(3PVM), pvm_psend(3PVM),
pvm_recv(3PVM)