NSOperationQueue vs NSThread Priority, контролирующий, сколько ЦП потребляется в NSOperationQueue

У меня есть предварительная загрузка некоторых текстур и звуковых эффектов, которые мне нужно выполнить асинхронно, чтобы создать плавный пользовательский интерфейс в игре для iOS, которую я разрабатываю.

Я пытаюсь выбрать между NSOperationQueue и NSThread для загрузки этих игровых ресурсов во время игры.

NSOperationQueue кажется явным победителем и имеет множество преимуществ, но меня беспокоит эффективный контроль приоритетов над этой «фоновой» задачей загрузки ресурсов, чтобы я мог отключить ее с точки зрения того, сколько циклов она потребляет, чтобы не влияют на частоту кадров.

Я вижу, что NSOperationQueue имеет концепцию «приоритета», но она выглядит иначе, чем концепция «приоритета» NSThread. Поправьте меня, если я ошибаюсь, но приоритет NSThread относится к другим потокам, работающим в системе, а приоритет NSOperation — это приоритет этой задачи по отношению к другим задачам в очереди.

Что я хочу знать, так это....

Есть ли способ контролировать приоритет данной задачи NSOperationQueue в зависимости от того, сколько циклов (в отличие от относительного приоритета по сравнению с другими задачами в очереди) она может потреблять по сравнению с другими потоками, работающими в настоящее время на устройстве?

Безопасно ли в задаче NSOperationQueue изменять приоритет текущего потока? (с +setPriority NSThread)


person mattorb    schedule 09.09.2011    source источник


Ответы (1)


Экземпляр NSOperation также имеет метод setThreadPriority: вместе с setQueuePriority:.

Это определенно то, что вы ищете.

- (void)setThreadPriority:(double)priority

Указанное вами значение сопоставляется со значениями приоритета операционной системы. Указанный приоритет потока применяется к потоку только во время выполнения основного метода операции. Он не применяется во время выполнения блока завершения операции. Для параллельной операции, в которой вы создаете свой собственный поток, вы должны сами установить приоритет потока в своем пользовательском методе запуска и сбросить исходный приоритет после завершения операции.

person Macmade    schedule 21.09.2011
comment
спасибо ... не знаю, как я это пропустил, но это определенно то, что я искал. - person mattorb; 22.09.2011