Everything You Always Wanted to Know About Synchronization but Were Afraid to Ask
Time, Clocks, and the Ordering of Events in a Distributed System
Heap Architectures For Concurrent Languages Using Message Passing
Message Analysis for Concurrent Languages
Finding Race Conditions in Erlang with QuickCheck and PULSE