#ios #concurrency #grand-central-dispatch #nsoperationqueue #ios-4.2
#iOS #параллелизм #grand-central-dispatch #nsoperationqueue #ios-4.2
Вопрос:
Как сказано в NSOperationQueue
ссылке на класс: в iOS очереди операций не используются Grand Central Dispatch
для выполнения операций. Они создают отдельные потоки для неконкурентных операций и запускают параллельные операции из текущего потока.
Но я обнаружил, что в iOS 4.2.1 очередь всегда создает потоки для параллельных или непараллельных операций. И я думаю, что очереди вообще все равно, параллельные они или нет, потому что точка останова в isConcurrent никогда не будет нарушена. Поэтому я думаю, что ссылка была неверной…
Ответ №1:
Если вы посмотрите на документацию по NSOperation, вы должны увидеть примечание о том, что Mac 10.6 (что примерно соответствует iOS 4.0) игнорирует isConcurrent.
По сути, единственной причиной для создания параллельной NSOperation было бы, если бы вы собирались запустить ее вручную.
Ответ №2:
NSOperationQueue
использует GCD. Из документации:
В iOS 4 и более поздних версиях очереди операций используют Grand Central Dispatch для выполнения операций.