On MSDN there is a great comparison of the properties OpenMP and ConcRT (core of PPL):
The OpenMP model is an especially good match for high-performance computing, where very large computational problems are distributed across the processing resources of a single computer. In this scenario, the hardware environment is known and the developer can reasonably expect to have exclusive access to computing resources when the algorithm is executed.
However, other, less constrained computing environments may not be a good match for OpenMP. For example, recursive problems (such as the quicksort algorithm or searching a tree of data) are more difficult to implement by using OpenMP. The Concurrency Runtime complements the capabilities of OpenMP by providing the Parallel Patterns Library (PPL) and the Asynchronous Agents Library. Unlike OpenMP, the Concurrency Runtime provides a dynamic scheduler that adapts to available resources and adjusts the degree of parallelism as workloads change.
So, Main disadvantages of OpenMP:
- static sheduling model.
- not contains cancelation mechanism (very huge disadvantage, in many concurrence algorithm cancelation is required).
- not contains concurrence agent approach.
- troubles with exceptions in paralel code.