Concurrent/parallel programming languages require synchronization. We are proposing concept of "abstract state," in which objects' internal states are made visible from outside, in a controlled fashon. State abstraction can be an ideal tool for specifying synchronization in parallel object-oriented programming language because it is simple, clean, and efficiently implementable. To demonsrate our correctness, we have designed and implemented a parallel object-oriented language called "p6." P6 implementation on 4CPU SparcServer 1000 has shown that very efficient implemtation of state abstraction-based synchronization can be constructed.
At first glance, state abstraction-based synchronization seems to suffer from the famous "inheritance anomaly" problem, but the contray is true. We can solve the problem by introducing state-splitting and cartesian product functionality along with interface inheritance. However, what is more important (as we think) is that state abstraction-based synchronization provides a natural way to caputure objects' synchronization behavior as a part of their interface signagures. Such functionality is the key to solve the problem in "the right manner."