Создает ли NSOperation новый поток? - PullRequest
0 голосов
/ 12 мая 2011

Очень просто, существует ли одно-однозначное соединение между потоком (или NSThread) и операцией NSO? Или это абстракция, операция - это своего рода задача, которую можно поднять и запустить несколькими потоками в фоновом режиме?

1 Ответ

4 голосов
/ 12 мая 2011

Не однозначное соединение, нет.Преимущество использования подклассов NSOperation заключается в том, что вам не нужно управлять многопоточностью самостоятельно.Apple даже (смущает) определяет типичный подкласс NSOperation (то есть тот, который переопределяет метод -main) как не параллельный , не потому, что он не поддерживает параллелизм, а потому, что детали параллелизмауправляется суперклассом:

Не путайте терминологию: просто потому, что операция не является одновременной, это не означает, что ее нельзя выполнить одновременно, это просто означает, что у вас нетобрабатывать параллелизм самостоятельно.

В этом смысле подкласс NSOperation намного больше похож на целевой объект detachNewThreadSelector:toTarget:withObject:.

в альтернативе NSThread. Альтернатива, если вы хотите контролироватьто, как ведет себя параллелизм, заключается в переопределении -start и настройке параллелизма по мере необходимости перед вызовом -main.

Вот очень хороший обзор: Управление параллелизмом с NSOperation

...