Patterns and Skeletons for Parallel and Distributed Computing by Fethi Rabhi & Sergei Gorlatch