Abstract
Polyphonic C# is an extension of the C# language with new asynchronous concurrency constructs, based on the join calculus. We describe the design and implementation of the language and give examples of its use in addressing a range of concurrent programming problems.
An earlier version of this work was presented at the FOOL9 workshop in January 2002 Portland, Oregon.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
G. Agha, P. Wegner, and A. Yonezawa. Research Directions in Concurrent Object-Oriented Programming. MIT Press, 1993.
P. America. Issues in the design of a parallel object-oriented language. Formal Aspects of Computing, 1(4):366–411, 1989.
T. Barclay, J. Gray, and D. Slutz. Microsoft TerraServer: A spatial data warehouse. In Proceedings of ACM SIGMOD, May 2000. Also Microsoft Research Tech Report MS-TR-99-29.
A. D. Birrell, J. V. Guttag, J. J. Horning, and R. Levin. Synchronization primitives for a multiprocessor: A formal specification. Research Report 20, DEC SRC, August 1987.
A. D. Birrell. An introduction to programming with threads. Research Report 35, DEC SRC, January 1989.
L. Cardelli and R. Davies. Service combinators for web computing. Software Engineering, 25(3):309–316, 1999.
S. Chaki, S. K. Rajamani, and J. Rehof. Types as models: Model checking message-passing programs. In Proceedings of the 29th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, 2002.
S. Conchon and F. Le Fessant. Jocaml: Mobile agents for Objective-Caml. In First International Symposium on Agent Systems and Applications (ASA’99)/Third International Symposium on Mobile Agents (MA’99), pages 22–29. IEEE Computer Society, October 1999. Software and documentation available from http://pauillac.inria.fr/jocaml.
D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Research Report 159, DEC SRC, December 1998.
ECMA. Standard ECMA-334: C# Language Specification, December 2001.
C. Fournet and G. Gonthier. The reflexive chemical abstract machine and the join-calculus. In Proc. POPL’96, pages 372–385. ACM, January 1996.
C. Fournet and G. Gonthier. The join calculus: a language for distributed mobile programming. In Proceedings of the Applied Semantics Summer School (APPSEM), Caminha, September 2000. To appear. Draft available from http://research.microsoft.com/~fournet.
C. Fournet, C. Laneve, L. Maranget, and D. Rémy. Inheritance in the join-calculus (extended abstract). In FST TCS 2000: Foundations of Software Technology and Theoretical Computer Science, volume 1974 of LNCS, pages 397–408, New Delhi, India, December 2000. Springer-Verlag. Full version available from http://research.microsoft.com/~fournet.
J. Gosling, B. Joy, and G. Steele. Threads and locks. In The Java Language Specification, chapter 17. Addison Wesley, 1996.
Y. Gurevich, W. Schulte, and C. Wallace. Investigating Java concurrency using abstract state machines. In Y. Gurevich, P. Kutter, M. Odersky, and L. Thiele, editors, Abstract State Machines: Theory and Applications, volume 1912 of Lecture Notes in Computer Science, pages 151–176. Springer, 2000.
C. A. R. Hoare. Monitors: An operating system structuring concept. Communications of the ACM, 17(10):549–557, October 1974.
C. A. R. Hoare. Communicating Sequential Processes. Prentice-Hall, 1985.
A. Igarashi and N. Kobayashi. A generic type system for the Pi-Calculus. In Proceedings of the 28th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, 2001.
INMOS Limited. Occam Programming Manual. Prentice-Hall Int., 1984.
S. Kamin, editor. Proceedings of the First ACM-SIGPLAN Workshop on Domain-Specific Languages, Paris, France, January 1997.
J. R. Larus and M. Parkes. Using cohort scheduling to enhance server performance. Technical Report MSR-TR-2001-39, Microsoft Research, March 2001.
D. Lea. Concurrent Programming in Java: Design Principles and Patterns. Addison-Wesley, second edition edition, 1999.
F. Le Fessant and L. Maranget. Compiling join-patterns. In U. Nestmann and B. C. Pierce, editors, HLCL’ 98: High-Level Concurrent Languages, volume 16(3) of Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, September 1998.
S. Matsuoka and A. Yonezawa. Analysis of inheritance anomaly in object-oriented concurrent programming languages. In AghaWegner Yonezawa [1], chapter 4, pages 107–150.
Microsoft Corporation. Terraservice. http://terraserver.microsoft.net/.
H. R. Nielson and F. Nielson. Higher-order concurrent programs with finite communication topology. In Proceedings of the 21st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, 1994.
M. Odersky. Functional nets. In Proc. European Symposium on Programming, volume 1782 of LNCS, pages 1–25. Springer Verlag, 2000.
M. Philippsen. Imperative concurrent object-oriented languages: An annotated bibliography. Technical Report TR-95-049, International Computer Science Institute, Berkeley, CA, 1995.
J. C. Ramming, editor. Proceedings of the First USENIX Conference on Domain-Specific Languages, Santa Barbara, California, October 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Benton, N., Cardelli, L., Fournet, C. (2002). Modern Concurrency Abstractions for C# . In: Magnusson, B. (eds) ECOOP 2002 — Object-Oriented Programming. ECOOP 2002. Lecture Notes in Computer Science, vol 2374. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47993-7_18
Download citation
DOI: https://doi.org/10.1007/3-540-47993-7_18
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43759-8
Online ISBN: 978-3-540-47993-2
eBook Packages: Springer Book Archive