STMX
High-performance transactional memory for Common Lisp
...Instead of traditional lock-based programming, one programs with atomic memory transactions: if a memory transaction returns normally it gets committed, if instead it signals an error (Lisp slang for throwing an exception) it is rolled back.
Memory transactions can safely run in parallel in different threads, are re-executed from the beginning in case of conflicts or if consistent reads cannot be guaranteed, and effects of a transaction are not visible from other threads until it commits.
STMX gives freedom from deadlocks, automatic rollback on failure, and it aims at resolving the tension between granularity and concurrency.