A Single-Version STM that Is Multi-Versioned Permissive
We present PermiSTM, a single-version STM that satisfies a practical notion of permissiveness, usually associated with keeping many versions: it never aborts read-only transactions, and it aborts other transactions only due to a conflicting transaction (writing to a common data item), thereby avoiding spurious aborts. PermiSTM also avoids unnecessary contention on the memory, being disjoint-access parallel.
permissiveness versions transactional memory disjoint access parallelism compare-and-swap k-compare-single-swap best-effort hardware transactional memory