The programming model induces better data locality, allowing it to support machine independence without losing efficiency. This means when a process blocks, waiting for a message, another process may execute on the processor. It also means that a single process may block for any number of distinct messages, and will be awakened when any of these messages arrive. Thus, it forms an effective way of scheduling a processor in the presence of potentially large latencies. A major activity in a parallel computation is creation and sharing of information.
Information is shared in many specific modes.
The system provides six information sharing modes, each of which may be implemented differently and efficiently on different machines. These mechanisms allow for compositionality of modules without sacrificing the latency-tolerance. With them, two modules, each spread over hundreds of processors, may exchange data in a distributed fashion. These processes interact with each other via messages and any of the other information-sharing abstractions. There may be thousands of medium-grained processes on each processor, or just a few, depending on the application.