Books
Transactional Memory
- Synthesis Notes on Computer Architecture - Transactional Memory [Larus and Rajwar]
- Principles of Transactional Memory
Semaphores
- Little Book of Semaphores [Downey]
Concurrent Systems
- Understanding Concurrent Systems [Roscoe] (CSP book)
Papers
Transactional Memory
- Subtleties of Transactional Memory Atomicity Semantics [Martin et. al] ]
- Beyond Simple Transactions and Atomic Blocks [Luchango]
- Transactional Memory: An overview [Harris et. al]
- Software Transactional Memory: Why Is It Only a Research Toy [Cascaval et. al]
- Why STMs can be more than a Research Toy [Dragojevic et. al]
- Transactional boosting: a methodology for highly-concurrent transactional objects [Herlihy and Koskinen]
- Elastic Transactions [Felber]
- Kicking the tires of software transactional memory: When the going gets tough [Yoo]
- Language support for lightweight transactions [Harris and Fraser]
- Compiler and Runtime Support for Efficient Software Transactional Memory [Adl-Tabatabai et. al]
- Software Transactional Memory for Dynamic-Sized Data Structures [Herlihy et. al]
- Transactional Memory with Data Invariants [Time Harris and Simon Peyton Jones]
- Transaction Polymorphism in Java [Gramoli and Guerraoui]
- Design Tradeoffs in Modern STMs [Marathe et. al]
- Open Nested Transactions: Semantics and Support [Moss]
- Privatization techniques for software transactional memory [Spear et. al]
Correctness of Parallelism
- Linearizability: a correctness condition for concurrent objects [Herlihy & Wing]
- Larch: Languages and Tools for Formal Specification
- Verifying Correct Usage of Atomic Blocks with Typestate [Beckman et. al]
Papers I would like to read if I have more time.
Lock Free Programming
- A Scalable Lock-Free Stack Algorithm [Hender et al.]
- Concurrent Programming without Locks [Fraser and Harris]
Memory Models
- The Java Memory Model. [Jeremy Manson, Sarita Adve]
- Threads cannot be implemented as a library [Hans Boehm]
- Double Checked Locking is Broken [Pugh]
Amorphous Data Parallelism
- A shape analysis for optimizing parallel graph programs [Prountzos, Pingali et. al]
- The Tao of Parallelism in Algorithms [Pingali et al.]
- Optimistic Parallelism requires abstractions [Kulkarni et al.]
- Optimistic Parallelism benefits from Data Partitioning
- Designing irregular parallel algorithms with mutual exclusion and lock-free protocols [Cong and Bader]