What is killing wide-spread use of OpenMP is the lack of support for error recovery (restoring the program to a known state).
If an error occurs inside a library you link to in an OpenMP thread, you generally have no way of recovering.
Is GCD better in that regard ?
(By contrast the POSIX thread API let you do a pthread_exit() with a marker value that will notify the caller of the error and also provide a way to cancel the remaining threads)