Abstract

To program massively concurrent MIMD machines, programmers need tools for managing complexity that do not restrict concurrency. One important tool that has been used in sequential programs is hierarchies of abstractions. Unfortunately, most concurrent object-oriented languages construct hierarchical abstractions from objects that serialize the processing of requests, limiting the concurrency of abstractions. Concurrent Aggregates (CA) is an object-oriented language that provides tools for building abstractions with unrestricted concurrency, aggregates. Aggregates are collections of objects that have a single group name, allowing aggregates and objects to be used interchangeably, increasing program concurrency while preserving the program′s modularity structure. This paper describes and evaluates the use of aggregates in a programming langauge. Based on our programming experience, we evaluate basic support for aggregates (a one-to-one-of-many interface and intra-aggregate addressing). In many applications, the basic support for aggregates can be used to build multiaccess data abstractions that maintain program modularity and increase concurrency. The one-to-one-of-many interface and intra-aggregate naming are sufficient to build a wide variety of replication structures and distributed interfaces. We also evaluate language support in CA for composing multiaccess data abstractions (delegation, first-class messages, and first-class and user-defined continuations). Delegation was not useful because, in most cases, some coordination code was needed to glue abstractions together, and representation incompatibilities between aggregates make a traditional shared-state approach infeasible. First-class messages were extremely useful for implementing data-parallel operations and a variety of customized synchronization and scheduling structures. First-class continuations found widespread use in simple synchronization structures. User-defined continuations are useful for group, source-blind synchronization structures such as barriers, but the lack of identifying information in reply messages limits user-defined continuations′ utility for more general fine-grained synchronization structures.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call