Tanks: multiple reader, single writer actors

In the past, the Actor Model has mainly been explored in a distributed context. However, more and more application developers are also starting to use it to program shared-memory multicore machines because of the safety guarantees it provides. It avoids issues such as deadlocks and race conditions by construction, and thus facilitates concurrent programming. The tradeoff is that the Actor Model sacrifices expressiveness with respect to accessing shared state because actors are fully isolated from each other (a.k.a. "shared-nothing parallelism"). There is a need for more high level synchronization mechanisms that integrate with the actor model without sacrificing the safety and liveness guarantees it provides. This paper introduces a variation on the communicating event-loops actor model called the TANK model. A tank is an actor that can expose part of its state as a shared read-only resource. The model ensures that any other actor will always observe a consistent version of that state, even in the face of concurrent updates of the actor that owns that state.

[1]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[2]  Fabienne Boyer,et al.  Ownership-Based Isolation for Concurrent Actors on Multi-core Machines , 2013, ECOOP.

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

[4]  Patrick Lam,et al.  Views: object-inspired concurrency control , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[5]  Stas Negara,et al.  Inferring ownership transfer for efficient message passing , 2011, PPoPP '11.

[6]  Idit Keidar,et al.  On maintaining multiple versions in STM , 2010, PODC.

[7]  Luke VanderHart,et al.  Practical Clojure , 2010 .

[8]  Joeri De Koster,et al.  Domains: safe sharing among actors , 2012, AGERE! 2012.

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

[10]  Jonathan S. Shapiro,et al.  Concurrency among strangers: programming in E as plan coordination , 2005 .

[11]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[12]  Jessie Dedecker,et al.  AmbientTalk: Object-oriented Event-driven Programming in Mobile Ad hoc Networks , 2007, XXVI International Conference of the Chilean Society of Computer Science (SCCC'07).

[13]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

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

[15]  Carlos A. Varela,et al.  Programming dynamically reconfigurable open systems with SALSA , 2001, SIGP.

[16]  Ralph E. Johnson,et al.  Why Do Scala Developers Mix the Actor Model with other Concurrency Models? , 2013, ECOOP.

[17]  Christophe Scholliers,et al.  Parallel Actor Monitors , 2010 .

[18]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .