Разница между операциями и потоками в какао - PullRequest
0 голосов
/ 23 июня 2009

Я изучаю Objective-C, я буду разрабатывать приложение для обработки видео.

Я читаю руководство разработчика по apple и наткнулся на объекты Operation. Мне просто нужны некоторые пояснения, в чем разница между операциями и потоками, недостатками, преимуществами, вариантами использования.

Из того, что я прочитал, работа - это более высокий уровень управления процессом приложения / задачей. NSOperationQueue может обрабатывать операционные ресурсы и параллелизм.

Чего я не понимаю, так это того, что Операция может быть запущена напрямую в потоке, мне не очень понятна эта концепция. Я не должен разъяснять разницу между операциями и потоками.

Пожалуйста, предоставьте мне как можно больше информации / информации о них.

Большое спасибо всем.

1 Ответ

2 голосов
/ 23 июня 2009

Разница между NSOperation и потоками - это абстракция. Поток - это низкоуровневая (на уровне операционной системы) конструкция, с помощью которой можно одновременно выполнять несколько «потоков» кода. Хотя Cocoa предоставляет API NSThread, по сути это оболочка API pthread s. NSOperation - это высокоуровневая абстракция задачи, которую вы хотите выполнить. NSOperationQueue запланирует выполнение очереди NSOperations, чтобы максимально использовать доступные ЦП. В многоядерной системе несколько NSOperations будут выполняться одновременно с использованием пула потоков, которые NSOperationQueue поддерживает. Преимущество использования этого высокоуровневого API заключается в том, что он позволяет вам думать о «операциях», которые вы хотите выполнить, а не о том, как их планировать. Недостаток (и, следовательно, преимущество использования NSThread напрямую) состоит в том, что вы имеете больший контроль над планированием потока и связью между потоком и другими потоками (см. -[NSObject performSelector:withObject:onThread:]). Для элементарных задач, таких как обработка видео, вероятно, лучше всего подойдет NSOperation.

...