BARRIER(3PVM) BARRIER(3PVM)
NAME
pvm_barrier - Blocks the calling process until all processes in a group
have called it.
SYNOPSIS
CC int info = pvm_barrier( char *group, int count )
Fortran call pvmfbarrier( group, count, info ))
PARAMETERS
group Character string group name. The group must exist and the calling
process must be a member of the group.
count Integer specifying the number of group members that must call
pvm_barrier before they are all released. Though not required,
count is expected to be the total number of members of the speci-
fied group.
info Integer status code returned by the routine. Values less than zero
indicate an error.
DISCUSSION
The routine pvm_barrier blocks the calling process until count members of
the group have called pvm_barrier. The count argument is required because
processes could be joining the given group after other processes have
called pvm_barrier. Thus PVM doesn't know how many group members to wait
for at any given instant. Although count can be set less, it is typically
the total number of members of the group. So the logical function of the
pvm_barrier call is to provide a group synchronization. During any given
barrier call all participating group members must call barrier with the
same count value. Once a given barrier has been successfully passed,
pvm_barrier can be called again by the same group using the same group
name.
If pvm_barrier is successful, info will be 0. If some error occurs then
info will be < 0.
EXAMPLES
C:
inum = pvm_joingroup( "worker" );
.
.
info = pvm_barrier( "worker", 5 );
Fortran:
CALL PVMFJOINGROUP( "shakers", INUM )
COUNT = 10
CALL PVMFBARRIER( "shakers", COUNT, INFO )
ERRORS
These error conditions can be returned by pvm_barrier
PvmSysErr pvmd was not started or has crashed.
PvmBadParam giving a count < 1.
PvmNoGroup giving a non-existent group name.
PvmNotInGroup calling process is not in specified group.
SEE ALSO
pvm_joingroup(3PVM)
Back to the alphabetical listing
Back to the listing of routines
for sending and receiving messages