An ASM Specification of C# Threads and the .NET Memory Model

  • Robert F. Stärk
  • Egon Börger
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3052)


We present a high-level ASM model of C# threads and the .NET memory model. We focus on purely managed, fully portable threading features of C#. The sequential model interleaves the computation steps of the currently running threads and is suitable for uniprocessors. The parallel model addresses problems of true concurrency on multiprocessor systems. The models provide a sound basis for the development of multi-threaded applications in C#. The thread and memory models complete the abstract operational semantics of C# in [2].


Memory Model Execution State Abstract State Machine Static Void Current Thread 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Awhad, V., Wallace, C.: A unified formal specification and analysis of the new Java memory models. In: ASM 2003. LNCS, vol. 2589, pp. 166–185. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  2. 2.
    Börger, E., Fruja, G., Gervasi, V., Stärk, R.F.: A high-level modular definition of the semantics of C#. Theoretical Computer Science (2004)Google Scholar
  3. 3.
    Börger, E., Stärk, R.F.: Abstract State Machines—A Method for High-Level System Design and Analysis. Springer, Heidelberg (2003)zbMATHGoogle Scholar
  4. 4.
    C# Language Specification. Standard ECMA–334 (2001), Web pages at
  5. 5.
    Common Language Infrastructure (CLI). Standard ECMA–335 (2001), Web pages at
  6. 6.
    Foundations of Software Engineering Group, Microsoft Research. AsmL (2001), Web pages at
  7. 7.
    Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java(tm) Language Specification., 2nd edn. Addison Wesley, Reading (2000)Google Scholar
  8. 8.
    Gurevich, Y.: Evolving algebras 1993: Lipari guide. In: Börger, E. (ed.) Specification and Validation Methods, pp. 9–36. Oxford University Press, Oxford (1993)Google Scholar
  9. 9.
    Hejlsberg, A., Wiltamuth, S., Golde, P.: C# Language Specification. Addison-Wesley, Reading (2003)Google Scholar
  10. 10.
    Java(TM) Memory Model and Thread Specification Revision, Web pages at
  11. 11.
    Microsoft.NET Framework 1.1 Software Development Kit, Download from
  12. 12.
    The Mono project, Web pages, at
  13. 13.
    Morrison, V.: The DOTNET Memory Model (2002), mailing list Google Scholar
  14. 14.
    Richter, J.: Safe thread synchronization. MSDN Magazine,NET column (January 2003)Google Scholar
  15. 15.
    Robison, G.: Memory consistency &.NET. Dr. Dobb’s Journal (April 2003)Google Scholar
  16. 16.
    Rotor – Shared Source Common Language Infrastructure (SSCLI), Web pages at and
  17. 17.
    Stärk, R.F., Schmid, J., Börger, E.: ava and the Java Virtual Machine— Definition, Verification, Validation. Springer, Heidelberg (2001)Google Scholar
  18. 18.
    Stutz, D., Neward, T., Shilling, G.: Shared Source CLI Essentials. O’Reilly, Sebastopol (2003)Google Scholar
  19. 19.
    von Praun, C., Gross, T.: Static conflict analysis for multi-threaded objectoriented programs. In: PLDI 2003, pp. 115–128 (June 2003)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Robert F. Stärk
    • 1
  • Egon Börger
    • 2
  1. 1.Computer Science DepartmentETH Zürich 
  2. 2.Dipartimento di InformaticaUniversità di Pisa 

Personalised recommendations