Robust Multithreaded Applications. by Jeffrey Michael Napper