Paper: High-Performance Concurrency Control Mechanisms for Main-Memory Databases
If you stayed up all night watching the life reaffirming Curiosity landing on Mars, then this paper, High-Performance Concurrency Control Mechanisms for Main-Memory Databases, has nothing to do with that at all, but it is an excellent look at how to use optimistic MVCC schemes to reduce lock overhead on in-memory datastructures:
A database system optimized for in-memory storage can support much higher transaction rates than current systems. However, standard concurrency control methods used today do not scale to the high transaction rates achievable by such systems. In this paper we introduce two efficient concurrency control methods specifically designed for main-memory databases. Both use multiversioning to isolate read-only transactions from updates but differ in how atomicity is ensured: one is optimistic and one is pessimistic. To avoid expensive context switching, transactions never block during normal processing but they may have to wait before commit to ensure correct serialization ordering. We also implemented a main-memory optimized version of single-version locking. Experimental results show that while single-version locking works well when transactions are short and contention is low performance degrades under more demanding conditions. The multiversion schemes have higher overhead but are much less sensitive to hotspots and the presence of long-running transactions.
This stuff isn't just for databases. Many applications have huge in-memory datastructures that are also accessed concurrently and can benefit from some of these ideas.