February 20, 2018
Artem Khyzha
Transactional memory (TM) facilitates the development of concurrent applications by letting the programmer designate certain code blocks as atomic. Programmers using a TM often would like to access the same data both inside and outside transactions, e.g., to improve performance or to support legacy code. In this case, programmers would ideally like the TM to guarantee strong atomicity, where transactions can be viewed as executing atomically also with respect to non-transactional accesses. Since guaranteeing strong atomicity for arbitrary programs is prohibitively expensive, researchers have suggested guaranteeing it only for certain data-race free (DRF) programs, particularly those that follow the privatization idiom: from some point on, threads agree that a given object can be accessed non-transactionally. Supporting privatization safely in a TM is nontrivial, because this often requires correctly inserting transactional fences, which wait until all active transactions complete.
In this talk, I will present a notion of DRF that takes into account transactional fences and show that it allows the programmer to safely use the privatization idiom. In particular, I will argue that a program indeed has strongly atomic semantics, when a TM satisfies a certain condition generalizing opacity and the program using it is DRF assuming strong atomicity.