NSOperationQueue и параллельная работа

#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 для выполнения операций.