The ImmediateProcessGroup concept implies the semantics of a communication medium in which messages are sent immediately and delivered at any time, without an intervening synchronization step. This is the primary difference between the ImmediateProcessGroup and its superior, MessagingProcessGroup: the latter requires a synchronization to ensure that a receive operation will succeed, whereas the former requires only they there be a send matching the receive.
| Concept tag | PG::communication_category | Must be convertible to bsp_process_group_tag. |
| Receivable message type | optional<pair<process_id_type, int> > | Describes a receivable message, if one exists. |
| Name | Expression | Type | Semantics |
|---|---|---|---|
| Receive message | receive(pg, id, tag, x) | Convertible to process_id_type | Receives a message with tag tag and stores the value into x. The message will come from process id and id will be returned. This routine will block until a send is matched. |
| Receive message from any sender | receive(pg, tag, x) | Convertible to process_id_type | Receives a message with tag tag and stores the value into x. The message may come from any sender, and the ID of the sender will be returned. This routine will block until a send is matched. |
| Receive array | receive(pg, id, tag, a, n) | Received array type | Receives a message with tag tag and stores the values (up to n of them) into array ''a''. The message will come from sender 'id'. A pair of id and the number of elements stored will be returned. The preconditions are equivalent to those of the non-array receive. |
| Receive array from any sender | receive(pg, tag, a, n) | Received array type | Receives a message with tag tag and stores the values (up to n of them) into array ''a''. The message may come from any sender. The sender ID and the number of elements stored will be returned. The preconditions are equivalent to those of the non-array receive from any sender. |
Copyright (C) 2004-5 The Trustees of Indiana University.
Authors: Douglas Gregor and Andrew Lumsdaine