Attributes are local to the process and specific to the communicator to which they are attached. Typically, such an attribute will be a pointer to a structure that contains further information, or a handle to an MPI object. Such attribute can be a handle to an MPI object, or just an integer-valued attribute.
Attributes are scalar values, equal in size to, or larger than a C-language pointer.
Attributes can always hold an MPI handle. The caching interface defined here represents that attributes be stored by MPI opaquely within a communicator. Caching and callback functions are only called synchronously, in response to explicit application requests. This avoid problems that result from repeated crossings between user and system space. This allows MPI to optimize its implementation of attribute sets.