C int info = pvm_freezegroup( char *group , int size)
Fortran call pvmffreezegroup( group, size, info )
Once a dynamic group has been frozen with pvm_freezegroup , all subsequent operations that can be satisfied with local data use the locally held information. For processes that are outside of the group, the first group call, e.g., pvm_bcast(), will cause the static group information to be copied to the calling process. Subsequent operations then use the local information. Barriers are still arbitrated by the group server.
Group members should call pvm_lvgroup to leave the group and free any allocated structures that hold the group information. Processes not in the group may call pvm_lvgroup to free any locally allocated structures. In this case, an error code of PvmNotInGroup or PvmNoGroup will be returned to the caller.
Barrier are always arbitrated by the group server, even if the group has been made static with pvm_freezegroup. If a process leaves a static group while other process are waiting at a barrier, then PvmNoGroup is returned to all processes waiting at the barrier. Future barrier calls with the defunct static group, return the same error.
C:
inum = pvm_joingroup("worker");
info = pvm_freezegroup( "worker", size );
Fortran:
CALL PVMFJOINGROUP('group2', inum)
CALL PVMFFREEZEGROUP( 'group2', size, info )
Processes are not notified if a frozen group becomes invalid.
Having a non-member process call pvm_lvgroup to free structures is a bit strange.