Nothing Special   »   [go: up one dir, main page]

skip to main content
10.5555/1764606.1764620guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Actors that unify threads and events

Published: 06 June 2007 Publication History

Abstract

There is an impedance mismatch between message-passing concurrency and virtual machines, such as the JVM. VMs usually map their threads to heavyweight OS processes. Without a lightweight process abstraction, users are often forced to write parts of concurrent applications in an event-driven style which obscures control flow, and increases the burden on the programmer.
In this paper we show how thread-based and event-based programming can be unified under a single actor abstraction. Using advanced abstraction mechanisms of the Scala programming language, we implemented our approach on unmodified JVMs. Our programming model integrates well with the threading model of the underlying VM.

References

[1]
Agha, G.A.: ACTORS: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, Massachusetts (1986).
[2]
Armstrong, J.: Erlang -- a survey of the language and its industrial applications. In: Proc. INAP, pp. 16-18 (October 1996).
[3]
Armstrong, J., Virding, R., Wikström, C., Williams, M.: Concurrent Programming in Erlang, 2nd edn. Prentice-Hall, Englewood Cliffs (1996).
[4]
Black, A., Carlsson, M., Jones, M., Kieburtz, R., Nordlander, J.: Timber: A programming language for real-time embedded systems (2002).
[5]
Briot, J.-P.: Actalk: A testbed for classifying and designing actor languages in the Smalltalk- 80 environment. In: Proc. ECOOP, pp. 109-129 (1989).
[6]
Chin, B., Millstein, T.D.: Responders: Language support for interactive applications. In: Proc. ECOOP, pp. 255-278 (July 2006).
[7]
Cooper, E., Morrisett, G.: Adding Threads to Standard ML. Report CMU-CS-90-186, Carnegie-Mellon University (December 1990).
[8]
Cunningham, R., Kohler, E.: Making events less slippery with eel. In: Proc. HotOS. USENIX (June 2005).
[9]
Draves, R.P., Bershad, B.N., Rashid, R.F., Dean, R.W.: Using continuations to implement thread management and communication in operating systems. Operating Systems Review 25(5), 122-136 (October 1991).
[10]
Dunkels, A., Grönvall, B., Voigt, T.: Contiki - A lightweight and flexible operating system for tiny networked sensors. In: LCN, pp. 455-462 (2004).
[11]
Emir, B., Odersky, M., Williams, J.: Matching Objects with Patterns. LAMP-Report 2006- 006, EPFL, Lausanne, Switzerland (December 2006).
[12]
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison-Wesley, London (1995).
[13]
Garbinato, B., Guerraoui, R., Hulaas, J., Monod, M., Spring, J.: Frugal Mobile Objects. Technical report, EPFL (2005).
[14]
Germain, G., Feeley, M., Monnier, S.: Concurrency oriented programming in Termite Scheme. In: Proc. Workshop on Scheme and Functional Programming (September 2006).
[15]
Haller, P., Odersky, M.: Event-based Programming without Inversion of Control. In: Light-foot, D.E., Szyperski, C.A. (eds.) JMLC 2006. LNCS, vol. 4228, pp. 4-22. Springer, Heidelberg (September 2006).
[16]
Harris, T., Fraser, K.: Language support for lightweight transactions. In: OOPSLA, pp. 388- 402 (2003).
[17]
Harris, T., Marlow, S., Jones, S.L.P., Herlihy, M.: Composable memory transactions. In: Proc. PPOPP, pp. 48-60. ACM, New York (June 2005).
[18]
Haynes, C.T., Friedman, D.P.: Engines build process abstractions. In: Symp. Lisp and Functional Programming, pp. 18-24. ACM, New York (August 1984).
[19]
Hewitt, C.E.: Viewing controll structures as patterns of passing messages. Journal of Artificial Intelligence 8(3), 323-364 (1977).
[20]
Lauer, H.C., Needham, R.M.: On the duality of operating system structures. Operating Systems Review 13(2), 3-19 (1979).
[21]
Lea, D.: Concurrent Programming in Java. Addison-Wesley, London (1996).
[22]
Lea, D.: A java fork/join framework. In: Java Grande, pp. 36-43 (2000).
[23]
Lee, E.A.: The problem with threads. Technical Report UCB/EECS-2006-1, University of California, Berkeley (January 2006).
[24]
Levis, P., Culler, D.: Mate: A tiny virtual machine for sensor networks. In: Proc. ASPLOS (October 2002).
[25]
Li, P., Zdancewic, S.: A language-based approach to unifying events and threads. Technical report, University of Pennsylvania (April 2006).
[26]
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification. Addison-Wesley, London (1996).
[27]
Nyström, J.H., Trinder, P.W., King, D.J.: Evaluating distributed functional languages for telecommunications software. In: Proc. Workshop on Erlang, pp. 1-7. ACM, New York (August 2003).
[28]
Ousterhout, J.: Why threads are A bad idea (for most purposes). Invited talk at USENIX (January 1996).
[29]
Pai, V.S., Druschel, P., Zwaenepoel, W.: Flash: An efficient and portable Web server. In: Proc. USENIX, pp. 199-212 (June 1999).
[30]
Thomas, D.A., Lalonde, W.R., Duimovich, J., Wilson, M., McAffer, J., Berry, B.: Actra: A multitasking/multiprocessing Smalltalk. ACM SIGPLAN Notices 24(4), 87-90 (April 1989).
[31]
Varela, C., Agha, G.: Programming dynamically reconfigurable open systems with SALSA. ACM SIGPLAN Notices 36(12), 20-34 (2001).
[32]
von Behren, J.R., Condit, J., Brewer, E.A.: Why events are a bad idea (for high-concurrency servers). In: Proc. Hot OS, USENIX, pp. 19-24 (May 2003).
[33]
von Behren, J.R., Condit, J., Zhou, F., Necula, G.C., Brewer, E.A.: Capriccio: scalable threads for internet services. In: Proc. SOSP, pp. 268-281 (2003).
[34]
Wand, M.: Continuation-based multiprocessing. In: LISP Conference, pp. 19-28 (1980).
[35]
Welsh, M., Culler, D.E., Brewer, E.A.: SEDA: An architecture for well-conditioned, scalable internet services. In: Proc. SOSP, pp. 230-243 (2001).

Cited By

View all
  • (2021)When threads meet events: efficient and precise static race detection with originsProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454073(725-739)Online publication date: 19-Jun-2021
  • (2019)An optimization-driven incremental inline substitution algorithm for just-in-time compilersProceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization10.5555/3314872.3314893(164-179)Online publication date: 16-Feb-2019
  • (2019)Renaissance: benchmarking suite for parallel applications on the JVMProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314637(31-47)Online publication date: 8-Jun-2019
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
COORDINATION'07: Proceedings of the 9th international conference on Coordination models and languages
June 2007
323 pages
ISBN:9783540727934
  • Editors:
  • Amy L. Murphy,
  • Jan Vitek

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 06 June 2007

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 22 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2021)When threads meet events: efficient and precise static race detection with originsProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454073(725-739)Online publication date: 19-Jun-2021
  • (2019)An optimization-driven incremental inline substitution algorithm for just-in-time compilersProceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization10.5555/3314872.3314893(164-179)Online publication date: 16-Feb-2019
  • (2019)Renaissance: benchmarking suite for parallel applications on the JVMProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314637(31-47)Online publication date: 8-Jun-2019
  • (2018)Concurrency-aware object-oriented programming with rolesProceedings of the ACM on Programming Languages10.1145/32765002:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • (2018)A Comprehensive Study on Bugs in Actor SystemsProceedings of the 47th International Conference on Parallel Processing10.1145/3225058.3225139(1-9)Online publication date: 13-Aug-2018
  • (2016)Experience report: growing and shrinking polygons for random testing of computational geometry algorithmsACM SIGPLAN Notices10.1145/3022670.295192751:9(193-199)Online publication date: 4-Sep-2016
  • (2016)43 years of actors: a taxonomy of actor models and their key propertiesProceedings of the 6th International Workshop on Programming Based on Actors, Agents, and Decentralized Control10.1145/3001886.3001890(31-40)Online publication date: 30-Oct-2016
  • (2016)Experience report: growing and shrinking polygons for random testing of computational geometry algorithmsProceedings of the 21st ACM SIGPLAN International Conference on Functional Programming10.1145/2951913.2951927(193-199)Online publication date: 4-Sep-2016
  • (2016)PTRebecaScience of Computer Programming10.1016/j.scico.2016.03.004128:C(22-50)Online publication date: 15-Oct-2016
  • (2016)DomainsComputer Languages, Systems and Structures10.1016/j.cl.2016.01.00345:C(132-160)Online publication date: 1-Apr-2016
  • Show More Cited By

View Options

View options

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media