A process group is an abstraction of a set of coordinating processes. A process group does not specify how the processes coordinate (although particular refinements of the concept may do so), but is able to determine which process is currently executing and how many processes are in the group.
| Concept tag | PG::communication_category | Must be convertible to process_group_tag. |
| Process ID type | PG::process_id_type | A type used to uniquely identify a particular process in the process group. This type must be DefaultConstructible, Assignable, and EqualityComparable. |
| Process size type | PG::process_size_type | An integral type used to store the number of processes |
| Name | Expression | Type | Semantics |
|---|---|---|---|
| Number of processes | num_processes(pg) | Convertible to process_size_type | Returns the number of processes in this group. |
| Executing process | process_id(pg) | Convertible to process_id_type | Returns the ID of the process that is currently executing. There are num_processes(pg) distinct return values. |
| Synchronize | synchronize(pg) | void | Processes wait at the synchronization barrier until all processes have arrived, at which point all processes continue execution. |
Copyright (C) 2004-5 The Trustees of Indiana University.
Authors: Douglas Gregor and Andrew Lumsdaine