pvm_nrecv man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

NRECV(3PVM)			PVM Version 3.4			   NRECV(3PVM)

NAME
       pvm_nrecv - Non-blocking receive.

SYNOPSIS
       C    int bufid = pvm_nrecv( int tid, int msgtag )

       Fortran	 call pvmfnrecv( tid, msgtag, bufid )

PARAMETERS
       tid     Integer	task  identifier  of  sending  process supplied by the
	       user.

       msgtag  Integer message tag supplied by the user.  msgtag should be  >=
	       0.

       bufid   Integer	returning  the	value of the new active receive buffer
	       identifier.  Values less than zero indicate an error.

DESCRIPTION
       The routine pvm_nrecv checks to see if a message with label msgtag  has
       arrived	from  tid.  and also clears the current receive buffer if any,
       If a matching message has arrived pvm_nrecv immediately places the mes‐
       sage  in a new active receive buffer, and returns the buffer identifier
       in bufid.

       If the requested message has not arrived,  then	pvm_nrecv  immediately
       returns with a 0 in bufid.  If some error occurs bufid will be < 0.

       A  -1 in msgtag or tid matches anything.	 This allows the user the fol‐
       lowing options.	If tid = -1 and msgtag is defined by  the  user,  then
       pvm_nrecv  will	accept a message from any process which has a matching
       msgtag.	If msgtag = -1 and tid is defined by the user, then  pvm_nrecv
       will accept any message that is sent from process tid.  If tid = -1 and
       msgtag = -1, then pvm_nrecv will accept any message from any process.

       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, mes‐
       sage A will arrive at task 2 before message B.  Moreover, if both  mes‐
       sages arrive before task 2 does a receive, then a wildcard receive will
       always return message A.

       pvm_nrecv is non-blocking in the sense that the routine always  returns
       immediately  either  with  the message or with the information that the
       message has not arrived at the local pvmd yet.  pvm_nrecv can be called
       multiple	 times	to check if a given message has arrived yet.  In addi‐
       tion the blocking receive pvm_recv can be called for the	 same  message
       if  the	application  runs  out	of  work  it  could do before the data
       arrives.

       If pvm_nrecv returns with the message, then the data in the message can
       be unpacked into the user's memory using the unpack routines.

EXAMPLES
       C:
	    tid = pvm_parent();
	    msgtag = 4 ;
	    arrived = pvm_nrecv( tid, msgtag );
	    if ( arrived > 0)
		 info = pvm_upkint( tid_array, 10, 1 );
	    else
		 /* go do other computing */

       Fortran:
	    CALL PVMFNRECV( -1, 4, ARRIVED )
	    IF ( ARRIVED .gt. 0 ) THEN
	       CALL PVMFUNPACK( INTEGER4, TIDS, 25, 1, INFO )
	       CALL PVMFUNPACK( REAL8, MATRIX, 100, 100, INFO )
	    ELSE
       *       GO DO USEFUL WORK
	    ENDIF

ERRORS
       These error conditions can be returned by pvm_nrecv.

       PvmBadParam
	      giving an invalid tid value or msgtag.

       PvmSysErr
	      pvmd not responding.

SEE ALSO
       pvm_bufinfo(3PVM),	   pvm_getminfo(3PVM),	       pvm_recv(3PVM),
       pvm_unpack(3PVM), pvm_send(3PVM), pvm_mcast(3PVM)

				30 August, 1993			   NRECV(3PVM)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net