(я ненавижу тот факт, что пока не могу комментировать, так как моя репутация недостаточно высока, вот почему этот «ответ»)
@ user57368 правильно в первом абзаце, однако есть (на основе исходного вопроса) несколько «проблем» с последними двумя абзацами:
GCD («отличный» инструмент многопоточности от Apple, называемый Grand Central Dispatcher) - это многопоточная среда исполнения, в которой используется libdispatch, обеспечивающий функции «dispatch_ *» GCD отлично использует (и делает код «лучше») с помощью конструкции блоков. ОДНАКО GCD не нужны блоки, так как существуют версии функций вызовов функции dispatch_ *.
Blocks - это конструкция, основанная на языке lamdba, которая не зависит и не обеспечивает функциональность GCD / libdispatch. Они оба были представлены Apple одновременно в мире MacOSX / iOS / Xcode, но они не зависят друг от друга.
PS: недавно я видел реализацию libdispatch для FreeBSD, а также некоторые попытки реализовать опцию в Linux.