Declarative scheduling for active objects

Active objects are programming constructs that abstract distribution and help to handle concurrency. In this paper, we extend the multiactive object programming model to offer a priority specification mechanism. This mechanism allows programmers to have control on the scheduling of requests. The priority representation is based on a dependency graph which makes it very convenient to use. This article shows how to use this mechanism from the programmer side, and exposes the main properties of the dependency graph. The software architecture of our implementation is also presented, as it can be applied to various scheduling systems. Finally, we validate our approach through a microbenchmark that shows that the overhead of our priority representation is rather low. On the whole, we provide a general pattern to introduce a prioritized scheduling in active objects or in any other concurrent systems. The resulting framework is shown to be fine-grained, user-friendly, and efficient.

[1]  Ludovic Henrio,et al.  Multi-threaded Active Objects , 2013, COORDINATION.

[2]  Theo D'Hondt,et al.  Ambient-Oriented Programming in AmbientTalk , 2006, ECOOP.

[3]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .

[4]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[5]  Reiner Hähnle,et al.  ABS: A Core Language for Abstract Behavioral Specification , 2010, FMCO.

[6]  Françoise Baude,et al.  Towards a Scalable Cloud-based RDF Storage Offering a Pub/Sub Query Service , 2012, CLOUD 2012.

[7]  Éric Tanter,et al.  Parallel actor monitors: Disentangling task-level parallelism from data partitioning in the actor model , 2014, Sci. Comput. Program..

[8]  Klaus-Peter Löhr,et al.  JAC: declarative Java concurrency , 2006, Concurr. Comput. Pract. Exp..

[9]  Frank S. de Boer,et al.  Programming and deployment of active objects with application-level scheduling , 2012, SAC '12.

[10]  Alan Mycroft,et al.  Kilim: Isolation-Typed Actors for Java , 2008, ECOOP.

[11]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[12]  Einar Broch Johnsen,et al.  Creol: A type-safe object-oriented model for distributed concurrent systems , 2006, Theor. Comput. Sci..

[13]  Arnd Poetzsch-Heffter,et al.  JCoBox: Generalizing Active Objects to Concurrent Components , 2010, ECOOP.

[14]  Denis Caromel,et al.  Asynchronous sequential processes , 2009, Inf. Comput..

[15]  James O. Coplien,et al.  Pattern languages of program design , 1995 .