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.