A data-centric approach to synchronization
CoreDet: a compiler and runtime system for deterministic multithreaded execution