202 Introduction to Concurrency in Programming Languages
• Recursive algorithms: Tasks are generated by recursively splitting a
problem into smaller subproblems. These subproblems are themselves
split until at some point the generated subproblems are small enough
to solve directly. In a divide and conquer algorithm, the splitting is
reversed to combine the solutions from the subproblems into a single
solution for the original problem.
Result parallelism
Result parallelism focuses on the data produced in the computation. The
core idea is to define the algorithm in terms of the data structures within the
problem and how they are decomposed.
• Data parallelism: A broadly applicable pattern in which the paral-
lelism is expressed as streams of instructions ...