GCD, NSOperationQueue или создать поток вручную? - PullRequest
9 голосов
/ 22 августа 2011

Когда вы используете темы, у вас есть какие-либо предпочтения? Как правило, для использования любого из этих методов:

  • создайте новый поток вручную и используйте цикл выполнения
  • использовать NSOperationQueue
  • или использовать Grand Central Dispatch и версию C с dispatch_queue?

Упрощает ли NSOperationQueue все, и поэтому его лучше использовать, когда нам нужно создать асинхронную функцию?

Ответы [ 2 ]

10 голосов
/ 22 августа 2011

Я ленив, поэтому моя философия - выбрать самое простое решение, которое делает все, что мне нужно. (Мне нравится думать, что это «ленивый», поддерживаемый Ларри Уоллом, но иногда мне интересно.)

Итак, мой порядок предпочтений будет:

  1. Асинхронные вызовы методов
  2. NSOperationQueue
  3. Grand Central Dispatch
  4. Тема

Существует увеличение сложности и гибкости с каждым шагом вниз. Если вам нужна дополнительная гибкость, то сложность, вероятно, того стоит.

3 голосов
/ 22 августа 2011

Я могу вспомнить, что на сессии WWDC 2010 было сказано, что GCD - это путь, если вы не работаете с API, которые в настоящее время плохо работают с ним.

Как правило, я всегда использую асинхронные вызовы методов для работы в сети и избегаю непосредственного использования pthreads или NSThreads, если это не является абсолютно необходимым.

...