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


Avoiding Race Conditions with Micro Transactions

Author

Term

4. term

Publication year

2008

Pages

74

Abstract

Race conditions opstår, når flere tråde samtidig læser og skriver de samme data uden korrekt koordinering. Rapporten foreslår "mikrotransaktioner": meget små operationer på sætningsniveau med implicit låsning, der kombinerer ideer fra klassiske låse og transaktionel hukommelse. Indførelsen af mikrotransaktioner ændrer, hvordan tildelingssætninger opfører sig i sproget. Låsene implementeres med busy-waiting og en atomisk compare-and-swap-instruktion (en hardware-primitiv, der kun opdaterer en værdi, hvis den matcher en forventet værdi). For at afgøre hvilke låse der kræves for at gøre hver mikrotransaktion atomisk, bruger vi en enkel points-to-analyse, der er flow-sensitiv (respekterer programrækkefølge) og felt-sensitiv (skelner mellem objektfelter). Eksperimenter viser, at ydeevnen er forholdsvis acceptabel. Men fordi mikrotransaktioner mangler kompositionalitet, hvilket betyder at små transaktioner ikke kan kombineres pålideligt til større, er de ikke en praktisk løsning på race conditions i moderne programmeringssprog.

Race conditions occur when multiple threads access and update shared data at the same time without proper coordination. This report proposes "micro transactions": very small, statement-level operations that use implicit locking, combining ideas from classic locks and transactional memory. Introducing micro transactions changes how assignment statements behave in the language. Locks are realized with busy-waiting and an atomic compare-and-swap instruction (a hardware primitive that updates a value only if it matches an expected value). To decide which locks are needed to make each micro transaction atomic, we use a simple points-to analysis that is flow-sensitive (respects program order) and field-sensitive (distinguishes object fields). Experiments indicate that performance is comparatively acceptable. However, because micro transactions lack compositionality, meaning small transactions cannot be reliably combined into larger ones, they are not a practical way to prevent race conditions in modern programming languages.

[This abstract was generated with the help of AI]