Abstract
Cω extended C# 1.x with a simple, declarative and powerful model of concurrency – join patterns – applicable both to multithreaded applications and to the orchestration of asynchronous, event-based distributed applications. With Generics available in C# 2.0, we can now provide join patterns as a library rather than a language feature. The Joins library extends its clients with an embedded, type-safe and mostly declarative language for expressing synchronization patterns. The library has some advantages over Cω: it is language neutral, supporting other languages like Visual Basic; its join patterns are more dynamic, allowing solutions difficult to express with Cω; its code is easy to modify, fostering experimentation. Although presenting fewer optimization opportunities, the implementation is efficient and its interface makes it trivial to translate Cω programs to C#. We describe the interface and implementation of Joins which (ab)uses almost every feature of Generics.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Microsoft Research: Cω (2004), http://research.microsoft.com/Comega
Russo, C.: Joins: A Concurrency Library, Binaries with tutorial and samples (2006), http://research.microsoft.com/research/downloads
Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for C#. ACM Transactions on Programming Languages and Systems 26 (2004)
Itzstein, G.S., Kearney, D.: Join Java: An alternative concurrency semantics for Java. Technical Report ACRC-01-001, University of South Australia (2001)
Chrysanthakopoulos, G., Singh, S.: An asynchronous messaging library for C#. In: Synchronization and Concurrency in Object-Oriented Languages (SCOOL). OOPSLA 2005 Workshop, UR Research (2005)
Kennedy, A.J., Russo, C.V.: Generalized algebraic data types and object-oriented programming. In: Object-Oriented Programming: Systems, Languages, Applications (OOPSLA), San Diego. ACM, New York (2005)
Fournet, C., Gonthier, G.: The join calculus: a language for distributed mobile programming. In: Barthe, G., et al. (eds.) APPSEM 2000. LNCS, vol. 2395. Springer, Heidelberg (2002)
Fournet, C., Le Fessant, F., Maranget, L., Schmitt, A.: JoCaml: a language for concurrent distributed and mobile programming. In: Jeuring, J., Jones, S.L.P. (eds.) AFP 2002. LNCS, vol. 2638. Springer, Heidelberg (2003)
Odersky, M.: An overview of functional nets. In: Barthe, G., et al. (eds.) APPSEM 2000. LNCS, vol. 2395. Springer, Heidelberg (2002)
Singh, S.: Higher-order combinators for join patterns using STM. In: TRANSACT ACM Workshop on Languages, Compilers and Hardware Support for Transactional Computing (2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Russo, C. (2006). The Joins Concurrency Library. In: Hanus, M. (eds) Practical Aspects of Declarative Languages. PADL 2007. Lecture Notes in Computer Science, vol 4354. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69611-7_17
Download citation
DOI: https://doi.org/10.1007/978-3-540-69611-7_17
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-69608-7
Online ISBN: 978-3-540-69611-7
eBook Packages: Computer ScienceComputer Science (R0)