Use dispatch_async para analisar uma matriz simultaneamente no Swift

Estou tentando analisar uma foto simultaneamente usando um thread de segundo plano do GCD. Aqui está o código que escrevi:

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)
    }
}

Para esclarecimentos sobre os nomes das variáveis, aqui estão suas descrições:

photoAnalyzer é uma instância de uma classe que escrevi chamadaAnalyzer que contém todos os métodos para processar a imagem.

analyzeColors é um método dentro doAnalyzer classe que faz a maior parte da análise e retorna uma string com a cor dominante da imagem passada

imageStrips é uma matriz deUIImageque compõem as partes da imagem original

colorList é uma matriz de strings que armazena os valores de retorno doanalyzeColor método para cada parte da imagem.

O código acima é executado sequencialmente desde que ofor loop acessa apenas uma imagem doimageList de uma vez. O que estou tentando fazer é analisar cada imagem noimageStrips simultaneamente, mas eu não tinha ideia de como fazer isso.

Todas as sugestões serão muito apreciadas. E se você quiser ver todo o código para me ajudar ainda mais, posso postar um link do GitHub.

EDITAR Este é o meu código atualizado para lidar com 8 processadores simultaneamente.

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

No entanto, se eu tentar usar mais de 8, o código realmente será mais lento do que sequencialmente.

questionAnswers(2)

yourAnswerToTheQuestion