Используйте dispatch_async для одновременного анализа массива в Swift

Я пытаюсь проанализировать фотографию одновременно, используя фоновую нить из GCD. Вот код, который я написал:

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.value), 0)) {
    for (var i = 0; i < 8; i++)
    {
        let color = self.photoAnalyzer.analyzeColors(imageStrips[i])
        colorList.append(color)
    }
}

Для уточнения имен переменных, вот их описания:

photoAnalyzer это экземпляр класса, который я написал под названиемAnalyzer который содержит все методы для обработки изображения.

analyzeColors это метод внутриAnalyzer класс, который выполняет большую часть анализа и возвращает строку с доминирующим цветом переданного изображения

imageStrips это массивUIImageэто составляющие части исходного изображения

colorList это массив строк, в котором хранятся возвращаемые значенияanalyzeColor метод для каждой части изображения.

Приведенный выше код выполняется последовательно, так какfor цикл обращается только к одному изображению изimageList вовремя. Я пытаюсь проанализировать каждое изображение вimageStrips одновременно, но я понятия не имел, как это сделать.

Любые предложения будут ценны. И если вы хотите увидеть весь код, чтобы помочь мне, я могу опубликовать ссылку на GitHub.

РЕДАКТИРОВАТЬ Это мой обновленный код для одновременной обработки 8 процессоров.

dispatch_apply(8, imageQueue) { numStrips -> Void in
    let color = self.photoAnalyzer.analyzeColors(imageStrips[numStrips])
    colorList.append(color)
}

Тем не менее, если я пытаюсь использовать более 8, код на самом деле работает медленнее, чем последовательно.

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

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