We need a programming model that combines the advantages of the synchronous and asynchronous parallel styles.
Asynchronous programs are more flexible and handle conditionals more efficiently.
Here we propose a programming model with the benefits of both styles. We allow asynchronous threads of control but restrict shared-memory accesses and other side effects so as to prevent the behavior of the program from depending on any accidents of execution order that can arise from the indeterminacy of the asynchronous process model. In this paper we concentrate on dynamic enforcement, and exhibit an implementation of a parallel dialect of Scheme based on these ideas. We also speculate on a design for a programming language using static enforcement. The notion of distinctness is important to proofs of noninterference.