کد مقاله | کد نشریه | سال انتشار | مقاله انگلیسی | نسخه تمام متن |
---|---|---|---|---|
432429 | 688890 | 2013 | 14 صفحه PDF | دانلود رایگان |
Transactional memory is an alternative to locks for handling concurrency in multi-threaded environments. Instead of providing critical regions that only one thread can enter at a time, transactional memory records sufficient information to detect and correct for conflicts if they occur. This paper surveys the range of options for implementing software transactional memory in Scala. Where possible, we provide references to implementations that instantiate each technique. As part of this survey, we document for the first time several techniques developed in the implementation of Manchester University Transactions for Scala. We order the implementation techniques on a scale moving from the least to the most invasive in terms of modifications to the compilation and runtime environment. This shows that, while the less invasive options are easier to implement and more common, they are more verbose and invasive in the codes using them, often requiring changes to the syntax and program structure throughout the code.
► Transactional memory is an alternative to lock-based concurrency management.
► We describe the range of techniques for software transactional memory including some new techniques.
► We evaluate all techniques and order them by invasiveness to the Scala environment.
► The least invasive techniques are harder for users, and adversely affect the code.
► The optimum point is not at either extreme of the scale.
Journal: Journal of Parallel and Distributed Computing - Volume 73, Issue 2, February 2013, Pages 150–163