Предоставляет ли pthreads какие-либо преимущества перед GCD?

Недавно изучив Grand Central Dispatch, я обнаружил, что многопоточный код довольно интуитивно понятен (с GCD). Мне нравится тот факт, что никаких блокировок не требуется (и тот факт, что он использует структуры данных без блокировок внутри), и что API очень прост.

Теперь я начинаю изучать нити и не могу не быть немного ошеломленным сложностью. Соединения потоков, взаимные исключения, условные переменные - все эти вещи не нужны в GCD, но имеют много вызовов API в pthreads.

Предоставляет ли pthreads какие-либо преимущества перед GCD? Это более эффективно? Существуют ли случаи обычного использования, когда pthreads может делать то, что GCD не может делать (исключая программное обеспечение уровня ядра)?

С точки зрения кроссплатформенности, я не слишком обеспокоен. В конце концов, libdispatch с открытым исходным кодом, Apple представила свои изменения замыканий в виде патчей для GCC, clang поддерживает замыкания, и уже (например, FreeBSD) мы начинаем видеть некоторые реализации GCD сторонних разработчиков. Я в основном заинтересован в использовании API (конкретные примеры были бы великолепны!).

Ответы на вопрос(6)

Ваш ответ на вопрос