AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


Language Integrated STM in C# Using the Roslyn Compiler: An Alternative to Locking

Translated title

Sprog Integreret STM i C# via Roslyn Compileren: Et Alternativ til Locking

Authors

; ;

Term

4. term

Publication year

2015

Submitted on

Pages

120

Abstract

Denne afhandling undersøger, om Software Transactional Memory (STM) integreret direkte i C# er et praktisk alternativ til traditionelle låse, og om det er lettere at bruge end STM leveret som et bibliotek. STM er en metode til at styre samtidighed ved at behandle ændringer som atomare transaktioner. For at undersøge dette udviklede vi AC#, en eksperimentel udvidelse af C#. AC# tilføjer indbygget STM-understøttelse, herunder betinget synkronisering med nøgleordene retry og orelse (retry venter og prøver igen; orelse vælger et alternativ), samt støtte for indlejrede transaktioner. AC# blev implementeret ved at udvide den open source Roslyn C#-kompiler. Den udvidede kompiler oversætter AC#-programmer til almindelig C#, som kalder et STM-bibliotek baseret på TLII-algoritmen. Vi implementerede fire forskellige samtidighedsproblemer med tre tilgange—AC#, et biblioteksbaseret STM og traditionelle låse i C#—for at dække forskellige aspekter af samtidig programmering. Herefter sammenlignede vi løsningerne ud fra et sæt brugbarhedskriterier. Vores evaluering viser, at AC# er et gyldigt alternativ til låse og giver bedre brugbarhed end biblioteksbaseret STM.

This thesis examines whether integrating Software Transactional Memory (STM) directly into C# is a practical alternative to traditional locking, and whether it is easier to use than STM provided as a library. STM coordinates concurrent code by grouping changes into atomic transactions. To investigate this, we built AC#, an experimental extension of C#. AC# adds built-in STM features, including conditional synchronization with the retry and orelse constructs (retry waits and tries again; orelse chooses an alternative), and supports nested transactions. AC# was implemented by extending the open-source Roslyn C# compiler. The extended compiler translates AC# programs into regular C# that calls an STM library implementing the TLII algorithm. We implemented four different concurrency problems using three approaches—AC#, a library-based STM, and conventional locking in C#—to cover different aspects of concurrent programming. We then compared the implementations using a set of usability criteria. Our evaluation shows that AC# is a viable alternative to locking and offers better usability than library-based STM.

[This abstract was generated with the help of AI]