1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
pvm_recv Scilab // Group Scilab function pvm_recv
NAME
pvm_recv - receive a message.
CALLING SEQUENCE
[buff, info, msgtid, tag] = pvm_recv(tid, msgtag)
PARAMETERS
tid : integer, task identifier of sending process supplied by the user.
msgtag : integer, message tag supplied by the user. msgtag should be
>= 0.
buff : scilab variable, where the received message will be stored.
info : integer, status code returned by the routine. Values less than
zero indicate an error.
msgtid : integer, returning the source of the message. Useful when the
message was received with a wildcard tid.
tag : integer, returning the message label. Useful when the message
was received with a wildcard msgtag.
DESCRIPTION
pvm_recv blocks the process until a message with label
has arrived from
pvm_recv then places the message in buff.
A -1 in
or
matches anything. This allows the user the following options. If tid =
-1 and msgtag is defined by the user, then pvm_recv will accept a message
from any process which has a matching msgtag. If msgtag = -1 and tid is
defined by the user, then pvm_recv will accept any message that is sent
from process tid. If tid = -1 and msgtag = -1, then pvm_recv will accept
any message from any process. When wildcard are used, the
application is able to receive any incoming message. If the action
taken depends on the source tid and the msgtag associated with the
message that comes in first, the information given by msgtid and tag can
be very usefull.
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.
will be the status code returned by the routine. If some error occurs
then
will be < 0.
pvm_recv is blocking which means the routine waits until a message
matching the user specified tid and msgtag values arrives at the local
pvmd. If the message has already arrived then pvm_recv returns
immediately with the message.
Once pvm_recv returns, the data in the message can be unpacked into the
user's memory using the unpack routines.
EXAMPLE
[b, info, msgtid, tag] = pvm_recv(pvm_parent(),100)
g = pvm_recv(pvm_parent(),200)
SEE ALSO
pvm_send, pvm_bcast
|