Next Prev: Access Control Up: Overview Contents

Multi-threaded Applications

The Portals API supports a generic view of multi-threaded applications. From the perspective of the Portals API, an application program is defined by a set of processes. Each process defines a unique address space. The Portals API defines access to this address space from other processes (using Portals addressing and the data movement operations). A process may have one or more threads executing in its address space.

With the exception of PtlEQWait and possibly PtlEQPoll, every function in the Portals API is non-blocking and atomic with respect to both other threads and external operations that result from data movement operations. While individual operations are atomic, sequences of these operations may be interleaved between different threads and with external operations. The Portals API does not provide any mechanisms to control this interleaving. It is expected that these mechanisms will be provided by the API used to create threads.