  Distributed computing often gives rise to complex concurrent and interacting
activities. In some cases several concurrent activities may be working
together, i.e. cooperating, to solve a given problem; in other cases, the
activities may be independent but needing to share common system resources for
which they must compete. Many difficulties and limitations occur in the widely
advocated objects and (trans)actions model when it is supposed to support
cooperating activities. We have introduced previously the concept of
coordinated atomic (CA) actions [Xu et al. 1995]; this paper analyzes and
examines the derived objects and CA actions model for constructing
fault-tolerant distributed systems and providing unified support for both
cooperative and competitive concurrency. Our investigation reveals and
clarifies several significant problems that have not previously been studied
extensively, including the problem of ensuring consistent access to shared
objects from a joint action as opposed to a set of independent actions.
Conceptual and implementation-related solutions are proposed and illustrated.
