Search This Blog


SCOOP: Concurrent Programming Made Easy

This 11 pages paper by Piotr Nienaltowski, Volkan Arslan and Bertrand Meyer is a very concise introduction about the SCOOP model that I commented on my previous post. Click here to get a copy of the paper.

Abstract: "The SCOOP model (Simple Concurrent Object-Oriented Programming) provides a simple yet very powerful mechanism for parallel computation. The model takes advantage of the inherent concurrency implicit in object-oriented programming to provide programmers with a simple extension enabling them to produce paralle applications with little more effort than sequential ones. SCOOP is applicable to many different physical setups, from multiprocessing to multithreading, highly parallel processors for scientific computation, distributed computation, and Web services. In this article, we present the basic concepts of the model and show how easily parallel and distributed computation can be achieved in a way that preserves the full power of all object-oriented techniques. Several programming examples illustrate the discussion."

  • Based on the concepts of Design by Contract
  • Additional keyword to the language: separate
  • Minimalist mechanism
  • Full use of object-oriented techniques
  • Avoids deadlocks
  • 2-level architecture: platform-independent (SCOOP) and platform-specific (low-level concurrency/threading mechanism)
  • Many processors (abstractions) provide threads of control for the application
  • The separate keyword basically indicates that the object, class or function will be handled by a different processor
  • There are Separateness Consistency Rules
  • Preconditions that involve separated entities force the client object to wait until they are satisfied
  • Lockings are automatic and controlled by the mechanism
  • Separated calls are scheduled to when the necessary locks are acquired and wait conditions are satisfied
  • Can handle distributed computation when processors are mapped to different physical resources
  • Distribution is configured through the Concurrency Control File but only done at runtime
Your comments are welcome.