SOM (Sequential Object Monitors) is a model for concurrent programming based on a thread-less scheduler. SOM makes it easier to develop concurrent programs because:
- SOM enforces a sequential view on multi-threaded program by ensuring individual methods are always run-to-completion, and
- SOM makes it possible to separate the concurrency concern from the base application.
Furthermore, SOM is efficient and scalable: it is based on collaborative scheduling in order to minimize context switches.
Note: SOM is now implemented on top of POM, a more generic concurrency abstraction.
This work is being developed in the INRIA-Conicyt ProXiMoS and OSCAR projects between the INRIA Sophia Antipolis (France) and the University of Chile (Chile).
SOM has been designed by Denis Caromel, Luis Mateu and Éric Tanter.
The SOM Plugin has been implemented, and is maintained, by Éric Tanter and Luis Mateu.
SOM is now part of POM and can be obtained via the POM download.
The SOM plugin handles the -som tag, which should indicate file(s) containing SOM declarations. For instance, the following:
schedule: Buffer with: BufferScheduler
declares that instances of Buffer will be scheduled with BufferScheduler objects. If this declaration is written if a file buffer.som then the following runs Reflex appropriately:
java reflex.Run --use som.jar -som buffer.som MyApp
The complete distribution also includes the benchmarks used in the ECOOP paper, thereby giving a simple example of application.