Transactional memory: architectural support for lock-free data structures
ISCA '93 Proceedings of the 20th annual international symposium on computer architecture
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Proceedings of the 5th conference on Computing frontiers
Atomic quake: using transactional memory in an interactive multiplayer game server
Proceedings of the 14th ACM SIGPLAN symposium on Principles and practice of parallel programming
Is transactional programming actually easier?
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Real Java applications in software transactional memory
IISWC '10 Proceedings of the IEEE International Symposium on Workload Characterization (IISWC'10)
A study of transactional memory vs. locks in practice
Proceedings of the twenty-third annual ACM symposium on Parallelism in algorithms and architectures
A preliminary assessment of Haskell's software transactional memory constructs
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Hi-index | 0.00 |
Many researchers believe that software transactional memory (STM) will play an important role in the transition to multicore systems. However, little effort has been placed on assessing whether STM delivers on its promises of avoiding common concurrent/parallel programming pitfalls. In this paper, we describe a controlled experiment aiming to evaluate the ease of using STM. The study targets Haskell, a purely functional programming language that includes a mature implementation of STM. It compares the use of STM and Haskell's lock-based concurrency control mechanism to develop a program with (coarse-grained) mutual exclusion and synchronization requirements. We organized the 51 subjects in two groups, one for each technique. We found out that the two techniques did not differ significantly in terms of concurrency errors, number of LoC and time to develop the resulting programs. However, for programs where developers made only non-concurrency-related mistakes, STM programmers finished their assignments quicker.