iOS: основное изображение и многопоточные приложения

Я пытаюсь запустить некоторые основные фильтры изображений наиболее эффективным способом. Попытка избежать предупреждений памяти и сбоев, которые я получаю при рендеринге больших изображений. Я смотрю на Apple,Руководство по программированию основного изображения. Относительно многопоточности это говорит:каждый поток должен создавать свои собственные объекты CIFilter. В противном случае ваше приложение может работать неожиданно ».

Что это значит?

На самом деле я пытаюсь запустить свои фильтры в фоновом потоке, чтобы я мог запустить HUD в основном потоке (см. Ниже). Имеет ли это смысл в контексте coreImage? Я понимаю, что основное изображение по своей сути использует GCD.

//start HUD code here, on main thread

// Get a concurrent queue form the system
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{

    //Effect image using Core Image filter chain on a background thread

    dispatch_async(dispatch_get_main_queue(), ^{

        //dismiss HUD and add fitered image to imageView in main thread

    });

});

Больше от Apple Docs:

Поддержание безопасности потока

Объекты CIContext и CIImage являются неизменяемыми, что означает, что каждый из них может безопасно использоваться всеми потоками. Несколько потоков могут использовать один и тот же объект CIContext для GPU или CPU для визуализации объектов CIImage. Однако это не относится к объектам CIFilter, которые являются изменяемыми. Объект CIFilter нельзя безопасно разделить между потоками. Если ваше приложение является многопоточным, каждый поток должен создавать свои собственные объекты CIFilter. В противном случае ваше приложение может работать неожиданно.

Ответы на вопрос(1)

Ваш ответ на вопрос