Grand Central Dispatch vs NSThreads?

Я просмотрел множество источников, но не совсем понял разницу между использованием NSThreads и GCD. Я совершенно новичок в платформе OS X, поэтому могу неправильно это понять.

Из того, что я читал в Интернете, кажется, что GCD делает то же самое, что и базовые потоки (POSIX, NSThreads и т. Д.), Но при этом добавляет гораздо больше технического жаргона («блоки»). Кажется, это просто чрезмерно усложняет базовую систему создания потоков (создать поток, запустить функцию).

Что такое GCD и почему он может быть предпочтительнее традиционной многопоточности? Когда следует использовать традиционные потоки, а не GCD? И наконец, в чем причина странного синтаксиса GCD? («блоки» вместо простого вызова функций).

Я использую Mac OS X 10.6.8 Snow Leopard, и я не программирую для iOS - я программирую для Mac. Я использую Xcode 3.6.8 в Какао, создавая приложение с графическим интерфейсом.

30
задан gypsicoder 4 June 2015 в 06:33
поделиться

1 ответ

GCD (Grand Central Dispatch): GCD предоставляет и управляет очередями FIFO, в которые ваше приложение может отправлять задачи в виде блочных объектов. Работа, отправляемая в очереди отправки, выполняется в пуле потоков, полностью управляемых системой. Не дается никаких гарантий относительно потока, в котором выполняется задача. Почему GCD поверх потоков:

Сколько работы делают ваши ядра CPU Сколько у вас ядер CPU. Сколько потоков должно быть создано. Если GCD нужен, он может войти в ядро ​​и обмениваться информацией о ресурсах, таким образом, улучшая планирование. Меньшая нагрузка на ядро ​​и лучшая синхронизация с ОС GCD использует существующие потоки из пула потоков вместо создания, а затем уничтожения. Наилучшее использование аппаратных ресурсов системы, позволяя операционной системе сбалансировать нагрузку всех программ, запущенных в настоящее время, с учетом таких факторов, как нагрев и срок службы батареи.

Я поделился своим опытом с потоками, операционной системой и GCD AT http://iosdose.com

2
ответ дан 27 November 2019 в 23:27
поделиться