Art of Multiprocessor Programming