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

Недавно изучив Центральную Отправку, я нашел, что многопоточный код довольно интуитивен (с GCD). Мне нравится то, что никакие блокировки не требуются (и то, что это использует незапертые структуры данных внутренне), и что API очень прост.

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

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

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

19
задан Mike 27 January 2010 в 05:05
поделиться

3 ответа

Это ошеломляющее ощущение, что вы испытываете .. Это именно поэтому ГХД был изобретен.

На самом базовом уровне есть темы, Pthreads - это POSIX API для потоков, чтобы вы могли записать код в любой совместименной ОС и ожидать его на работу. GCD построен на верхней части нитей (хотя я не уверен, что на самом деле используются Pthreads в качестве API). Я верю, что GCD работает только на ОС X и IOS - что в двух словах - это его главный недостаток.

Обратите внимание, что проекты, которые вводят тяжелое использование потоков и требуют высокой производительности, реализуют свою собственную версию пулов резьбы. GCD позволяет избежать (Re) изобретать колесо для разумного времени.

14
ответ дан 30 November 2019 в 03:38
поделиться

GCD - это технология Apple, а не самая поперечная платформа, совместимая; Pthread доступны практически обо всем, от OSX, Linux, Unix, Windows .. в том числе GCD Toaster

, оптимизирован для параллелизма пула резьбы. Pthreads (как вы говорили) Очень сложные строительные блоки для параллелизма, вы остаетесь разработать свои собственные модели. Я настоятельно рекомендую поднять книгу по теме, если вы заинтересованы в обучении больше о Pthreads и различных моделях параллелизма.

4
ответ дан 30 November 2019 в 03:38
поделиться

Похоже, что ошибка в гибернации:

http://opensource.atlassian.com/projects/ibernate/browse/hhhhhth-123

-121--3950718-

Как любой декларативный / вспомогательный подход, как OpenMP или GCD GCD GCD GCD GCD GCD, должен быть очень хорош в , смутительно параллельных проблем, и, вероятно, легко побит наивным вручную Pthread-Ed Parallel Sort. Я бы предположил, что вы все еще изучаете Pthreads, хотя. Вы сможете лучше понять параллелизм, вы сможете применить правильный инструмент в каждой конкретной ситуации, и если да не больше - есть тонна кода на основе Pthread, вы сможете прочитать код «устаревшего».

3
ответ дан 30 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: