skip to main content
article
Open access

Modern concurrency abstractions for C#

Published: 01 September 2004 Publication History

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.

References

[1]
Agha, G. 1990. ACTORS : A model of Concurrent computations in Distributed Systems. The MIT Press, Cambridge, Mass.]]
[2]
Agha, G., Wegner, P., and Yonezawa, A. 1993. Research Directions in Concurrent Object-Oriented Programming. MIT Press.]]
[3]
America, P. 1989. Issues in the design of a parallel object-oriented language. Formal Aspects of Computing 1, 4, 366--411.]]
[4]
Andrews, G. R. and Olsson, R. A. 1993. The SR Programming Language: Concurrency in Practice. Benjamin/Cummings.]]
[5]
Andrews, G. R., Olsson, R. A., Coffin, M., Elshoff, I., Nilsen, K., Purdin, T., and Townsend, G. 1988. An overview of the SR language and implementation. ACM Trans. Prog. Lang. Syst. 10, 1 (Jan.), 51--86.]]
[6]
Banâtre, J.-P., Coutant, A., and Métayer, D. L. 1988. A parallel machine for multiset transformation an its programming style. Future Generation Computing Systems 4, 133--144.]]
[7]
Barclay, T., Gray, J., and Slutz, D. 2000. Microsoft TerraServer: A spatial data warehouse. In Proceedings of ACM SIGMOD. Also Microsoft Research Tech. Rep. MS-TR-99-29.]]
[8]
Barclay, T., Gray, J., Strand, E., Ekblad, S., and Richter, J. 2002. TerraService.NET: An introduction to web services. Tech. Rep. MSR-TR-2002-53, Microsoft Research. June.]]
[9]
Ben-Ari, M. 1998. How to solve the Santa Claus problem. Concurrency: Practice & Experience 10, 6, 485--496.]]
[10]
Benton, N. 2003. Jingle bells: Solving the Santa Claus problem in Polyphonic &Csharp;.]]
[11]
Birrell, A. D. 1989. An introduction to programming with threads. Research Report 35, DEC SRC. Jan.]]
[12]
Birrell, A. D., Guttag, J. V., Horning, J. J., and Levin, R. 1987. Synchronization primitives for a multiprocessor: A formal specification. Research Report 20, DEC SRC. Aug.]]
[13]
Buscemi, M. G. and Sassone, V. 2001. High-level petri nets as type theories in the join calculus. In Foundations of Software Science and Computation Structures, 4th International Conference (FOSSACS 2001), F. Honsell and M. Miculan, Eds. Lecture Notes in Computer Science, vol. 2030. Springer, 104--120.]]
[14]
Cardelli, L. and Davies, R. 1999. Service combinators for web computing. Software Engineering 25, 3, 309--316.]]
[15]
Chaki, S., Rajamani, S. K., and Rehof, J. 2002. Types as models: Model checking message-passing programs. In Proceedings of the 29th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM.]]
[16]
Conchon, S. and Le Fessant, F. 1999. 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). IEEE Computer Society, 22--29. Software and documentation available from http://pauillac.inria.fr/jocaml.]]
[17]
Dahl, O.-J. and Nygaard, K. 1966. SIMULA -- an ALGOL-Based Simulation Language. Comm. ACM 9, 9 (Sept.), 671--678.]]
[18]
Detlefs, D. L., Leino, K. R. M., Nelson, G., and Saxe, J. B. 1998. Extended static checking. Research Report 159, DEC SRC. Dec.]]
[19]
ECMA. 2001. Standard ECMA-334: &Csharp; Language Specification.]]
[20]
Fournet, C. and Gonthier, G. 1996. The reflexive chemical abstract machine and the join-calculus. In Proceedings of the 23rd ACM-SIGACT Symposium on Principles of Programming Languages. ACM, 372--385.]]
[21]
Fournet, C. and Gonthier, G. 2002. The join calculus: a language for distributed mobile programming. In Proceedings of the Applied Semantics Summer School (APPSEM), Caminha, Sept. 2000, G. Barthe, P. Dybjer, L. Pinto, and J. Saraiva, Eds. Lecture Notes in Computer Science, vol. 2395. Springer-Verlag, 268--332.]]
[22]
Fournet, C., Laneve, C., Maranget, L., and Rémy, D. 2000. Inheritance in the join-calculus (extended abstract). In FST TCS 2000: Foundations of Software Technology and Theoretical Computer Science. Lecture Notes in Computer Science, vol. 1974. Springer-Verlag, 397--408. Full version to appear in Journal of Logic and Algebraic Programming.]]
[23]
Gosling, J., Joy, B., and Steele, G. 1996. Threads and locks. In The Java Language Specification. Addison Wesley, Chapter 17.]]
[24]
Gurevich, Y., Schulte, W., and Wallace, C. 2000. Investigating Java concurrency using abstract state machines. In Abstract State Machines: Theory and Applications, Y. Gurevich, P. Kutter, M. Odersky, and L. Thiele, Eds. Lecture Notes in Computer Science, vol. 1912. Springer-Verlag, 151--176.]]
[25]
Hewitt, C. 1977. Viewing control structures as patterns of passing messages. J. Artificial Intell. 8, 3, 323--364.]]
[26]
Hoare, C. A. R. 1974. Monitors: An operating system structuring concept. Comm. ACM 17, 10 (Oct.), 549--557.]]
[27]
Hoare, C. A. R. 1985. Communicating Sequential Processes. Prentice-Hall.]]
[28]
Igarashi, A. and Kobayashi, N. 2001. A generic type system for the Pi-Calculus. In Proceedings of the 28th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM.]]
[29]
INMOS Limited. 1984. Occam Programming Manual. Prentice-Hall Int.]]
[30]
Itzstein, G. S. and Jasiunas, M. 2003. On implementing high level concurrency in java. In Proceedings of the Eighth Asia-Pacific Computer Systems Architecture Conference. Japan. To appear.]]
[31]
Itzstein, G. S. and Kearney, D. 2001. Join Java: An alternative concurrency semantics for Java. Tech. Rep. ACRC-01-001, University of South Australia.]]
[32]
Itzstein, G. S. and Kearney, D. 2002. Applications of Join Java. In Proceedings of the Seventh Asia-Pacific Computer Systems Architectures Conference (ACSAC2002), Melbourne, Australia, F. Lai and J. J. Morris, Eds. Conferences in Research and Practice in Information Technology, vol. 6. ACS, 37--46.]]
[33]
Kamin, S., Ed. 1997. Proceedings of the First ACM-SIGPLAN Workshop on Domain-Specific Languages. Paris, France.]]
[34]
Larus, J. R. and Parkes, M. 2001. Using cohort scheduling to enhance server performance. Tech. Rep. MSR-TR-2001-39, Microsoft Research. Mar.]]
[35]
Le Fessant, F. and Maranget, L. 1998. Compiling join-patterns. In HLCL '98: High-Level Concurrent Languages, U. Nestmann and B. C. Pierce, Eds. Electronic Notes in Theoretical Computer Science, vol. 16(3). Elsevier Science Publishers.]]
[36]
Lea, D. 1999. Concurrent Programming in Java: Design Principles and Patterns, Second Edition. Addison-Wesley.]]
[37]
Matsuoka, S. and Yonezawa, A. 1993. Analysis of inheritance anomaly in object-oriented concurrent programming languages. See Agha et al. {1993}, Chapter 4, 107--150.]]
[38]
Nielson, H. R. and Nielson, F. 1994. Higher-order concurrent programs with finite communication topology. In Proceedings of the 21st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM.]]
[39]
Odersky, M. 2000. Functional nets. In Proceedings of the European Symposium on Programming. Lecture Notes in Computer Science, vol. 1782. Springer-Verlag, 1--25.]]
[40]
Philippsen, M. 1995. Imperative concurrent object-oriented languages: An annotated bibliography. Tech. Rep. TR-95-049, International Computer Science Institute, Berkeley, CA.]]
[41]
Pierce, B. C. and Turner, D. N. 2000. Pict: A programming language based on the pi-calculus. In Proof, Language and Interaction: Essays in Honour of Robin Milner, G. D. Plotkin, C. Stirling, and M. Tofte, Eds. MIT Press.]]
[42]
Ramming, J. C., Ed. 1997. Proceedings of the First USENIX Conference on Domain-Specific Languages. Santa Barbara, California.]]
[43]
Reppy, J. H. 1992. Concurrent ML: Design, application and semantics. In Programming, Concurrency, Simulation and Automated Reasoning. Lecture Notes in Computer Science, vol. 693. Springer-Verlag, 165--198.]]
[44]
Trono, J. A. 1994. A new exercise in concurrency. SIGCSE Bulletin 26, 3, 8--10. Corrigendum: 26(4):63.]]
[45]
Yonezawa, A. 1990. ABCL: An Object-Oriented Concurrent System -- Theory, Language, Programming, Implementation and Application. Computer System Series. MIT Press.]]

Cited By

View all
  • (2022)LabBuddy: A Game-based Interactive and Immersive Educational Platform for Physics Lab Learning using Artificial Intelligence and 3D Game EngineArtificial Intelligence and Applications10.5121/csit.2022.121814(145-154)Online publication date: 29-Oct-2022
  • (2022)Towards Practical Application-level Support for Privilege SeparationProceedings of the 38th Annual Computer Security Applications Conference10.1145/3564625.3564664(71-87)Online publication date: 5-Dec-2022
  • (2020)Robust Performance of Main Memory Data Structures by ConfigurationProceedings of the 2020 ACM SIGMOD International Conference on Management of Data10.1145/3318464.3389725(1651-1666)Online publication date: 11-Jun-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Programming Languages and Systems
ACM Transactions on Programming Languages and Systems  Volume 26, Issue 5
September 2004
144 pages
ISSN:0164-0925
EISSN:1558-4593
DOI:10.1145/1018203
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 September 2004
Published in TOPLAS Volume 26, Issue 5

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Asynchrony
  2. chords
  3. events
  4. join calculus
  5. messages
  6. polyphonic C
  7. synchronization
  8. threads

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)161
  • Downloads (Last 6 weeks)15
Reflects downloads up to 08 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2022)LabBuddy: A Game-based Interactive and Immersive Educational Platform for Physics Lab Learning using Artificial Intelligence and 3D Game EngineArtificial Intelligence and Applications10.5121/csit.2022.121814(145-154)Online publication date: 29-Oct-2022
  • (2022)Towards Practical Application-level Support for Privilege SeparationProceedings of the 38th Annual Computer Security Applications Conference10.1145/3564625.3564664(71-87)Online publication date: 5-Dec-2022
  • (2020)Robust Performance of Main Memory Data Structures by ConfigurationProceedings of the 2020 ACM SIGMOD International Conference on Management of Data10.1145/3318464.3389725(1651-1666)Online publication date: 11-Jun-2020
  • (2019)Concurrent Typestate-Oriented Programming in JavaElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.291.3291(24-34)Online publication date: 2-Apr-2019
  • (2019)Chemical foundations of distributed aspectsDistributed Computing10.1007/s00446-018-0334-632:3(193-216)Online publication date: 1-Jun-2019
  • (2018)How Latino Children in the U.S. Engage in Collaborative Online Information Problem Solving with their FamiliesProceedings of the ACM on Human-Computer Interaction10.1145/32744092:CSCW(1-26)Online publication date: 1-Nov-2018
  • (2018)'Welcome' Changes?Proceedings of the ACM on Human-Computer Interaction10.1145/32743212:CSCW(1-26)Online publication date: 1-Nov-2018
  • (2018)Versatile event correlation with algebraic effectsProceedings of the ACM on Programming Languages10.1145/32367622:ICFP(1-31)Online publication date: 30-Jul-2018
  • (2018)Cooperative decoupled processesSoftware Quality Journal10.1007/s11219-017-9366-626:3(1147-1183)Online publication date: 1-Sep-2018
  • (2018)Impact of Programming Languages on Energy Consumption for Sorting AlgorithmsSoftware Engineering10.1007/978-981-10-8848-3_9(93-101)Online publication date: 13-Jun-2018
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media