Quantos tópicos são necessários para torná-los uma má escolha?

Eu tenho que escrever um programa não tão grande em C ++, usando boost :: thread.

O problema em questão é processar um número grande (talvez milhares ou dezenas de milhares. Centenas e milhões também são possíveis) de arquivos (possivelmente) grandes. Cada arquivo é independente do outro e todos residem no mesmo diretório. Estou pensando em usar a abordagem multi-threaded, mas a questão é, quantos tópicos devo usar? Quero dizer, que ordem de grandeza? 10, 500, 12400?

Existem alguns problemas de sincronização, cada thread deve retornar uma estrutura de valores (que são acumulados para cada arquivo), e esses são adicionados a uma estrutura "global" para obter os dados gerais. Eu percebo que alguns segmentos podem "ficar com fome" por causa da sincronização, mas se for apenas uma operação de adição, isso importa?

Eu estava pensando em

for(each file f in directory){

    if (N < max_threads)//N is a static variable controlling amount of threads
         thread_process(f)
    else
       sleep()
}

Isso é no HP-UX, mas não poderei testá-lo com frequência, já que é um servidor remoto e bastante inacessível.

questionAnswers(15)

yourAnswerToTheQuestion