Solving Problems on Concurrent Processors: General Techniques and Regular Problems