Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Open access

Modern concurrency abstractions for C#

Published: 01 September 2004 Publication History
  • Get Citation Alerts
  • 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

    Reviews

    Sergei Gorlatch

    Polyphonic C#, an extension of the C# language, is presented in this paper. It is based on the join calculus, and seeks to facilitate the development of concurrent programs. The main new features are asynchronous methods, and so-called chords. Asynchronous methods in Polyphonic C# return immediately, and do not return a value (but they may have parameters). A chord is essentially a list of methods (the header) and a chord body. The body is only executed when all of the methods of the chord have been called. The chord header contains exactly one synchronous, and any number of asynchronous, methods. The return value of the synchronous method is computed in the chord body, probably using parameters passed to one of the asynchronous methods. This paper presents a detailed informal specification of the Polyphonic C# language extensions, and provides a few small but interesting examples of the use of chords and asynchronous methods. The authors describe the implementation in C#, and compare the performance of Polyphonic C# with standard C#. The paper concludes with a presentation of related work, and hints at future improvements. In general, the paper is interesting to read, although the information provided is often quite specific to C#, and will thus be of interest mostly to readers familiar with the C# language. Unfortunately, there is no language-independent introduction to the join calculus; instead, only the Polyphonic C# implementation is described. However, the examples provided in the paper (single cell buffer, reader-writer locks, active objects, and a few others) are very interesting to read, and provide a good impression of the expressive power of chords. The section covering the Polyphonic C# implementation goes into great detail about the implementation. Though the presentation may be quite interesting for C# programmers, a reader with only a general interest in concurrent programming may find it somewhat lengthy. In summary, the paper presents the integration of asynchronous methods and chords into the C# framework, and will definitively be very interesting for anybody concerned with C#, but will also be of interest to readers with only a general concern for concurrent programming. Online Computing Reviews Service

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    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)102
    • Downloads (Last 6 weeks)7

    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

    Get Access

    Login options

    Full Access

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media