Abstract
MC# is a programming language for cluster- and GRID-architectures based on asynchronous parallel programming model accepted in Polyphonic C# language (N.Benton, L.Cardelli, C.Fournet; Microsoft Research, Cambridge, UK). Asynchronous methods of Polyphonic C# play two major roles in MC#: 1) as autonomous methods executed on remote machines, and 2) as methods used for delivering messages. The former are identified in MC# as the “movable methods”, and the latter form a special syntactic class with the elements named “channels”. Similar to Polyphonic C#, chords are used for defining the channels and as a synchronization mechanism. The MC# channels are generalised naturally to “bidirectional channels”, which may be used both for sending and receiving messages in the movable methods. The runtime-system of MC# has as the basic operation a copying operation for the object which is scheduled for execution on remote machine. This copy is “dead” after the movable method has finished its work, and all changes of this remote copy are not transferred to the original object. Arguments of the movable method are copied together with an original object, but the passing of bidirectional channels is realised through transferring the proxies for such channels. By way of experiments in MC#, we have written a series of parallel programs such as a computation of Fibonacci numbers, walking through binary tree, computation of primes by Eratosthenes sieve, calculation of Mandelbrot set, modeling the Conway’s game “Life”, etc. In all these cases, we got the easy readable and compact code. Also we have an experimental implementation in which the compiler is written in SML.NET, and the execution of movable methods on remote machines is based on the Reflection library of .NET platform.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Benton, N., Cardelli, L., Fournet, C.: Modern Concurrency Abstractions for C#, To appear in ACM Transactions on Programming Languages and Systems
Fournet, C., Gonthier, G.: The reflexive chemical abstract machine and the joincalculus. In: Proceedings of the 23rd ACM-SIGACT Symposium on Principles of Programming Languages, pp. 372–385. ACM, New York (2002)
Fournet, C., Le Fessant, F.: Jocaml, a Language for Concurrent, Distributed and Mobile Programming. In: Proceedings of the 4th Summer School on Advanced Functional Programming, Oxford, August 19–24 (2002)
Abramov, S., Adamovich, A.: T-system: a programming environment with support of automatic dynamic parallelizing of programs (in Russian). In: Ailamazyan, A.C., Moscow, Nauka (eds.) Program systems: Theoretical foundations and applications, pp. 201–213 (1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Guzev, V., Serdyuk, Y. (2003). Asynchronous Parallel Programming Language Based on the Microsoft .NET Platform. In: Malyshkin, V.E. (eds) Parallel Computing Technologies. PaCT 2003. Lecture Notes in Computer Science, vol 2763. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45145-7_21
Download citation
DOI: https://doi.org/10.1007/978-3-540-45145-7_21
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40673-0
Online ISBN: 978-3-540-45145-7
eBook Packages: Springer Book Archive