9. BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Bob';
COMMIT;
11. ● Hardware and Software support
● Some modern processors (Haswell) support it
– https://software.intel.com/en-us/blogs/2012/02/07/transactional-synchronization-in-haswell
12. ● Transaction is started
● Memory read are logged into read set
● Memory writes are logged into write set
● Commit is attempted
16. Problems
● Too experimental
● Only runs in 64 bit Linux and patched version of
Clang (just for translation)
● Limited to 1.5 GB of Ram (Configurable)
● JIT warm up still pretty bad
● Different GC from regular PyPy (Less efficient)
● Long running processes crash
18. References
● Rajwar, Herlihy and Lai:
Virtualizing Transactional Memory
● Herlihy and Moss: Transactional Memory:
Architectural Support for Lock-Free Data
Structures
● Dice, Shalev, Shavit: Transactional Locking II