¿Cuántos hilos se necesitan para que sean una mala elección?

Tengo que escribir un programa no tan grande en C ++, usando boost :: thread.

El problema que nos ocupa es procesar una gran cantidad (tal vez miles o decenas de miles. Cientos y millones son una posibilidad también) de (posiblemente) grandes archivos. Cada archivo es independiente de otro y todos residen en el mismo directorio. Estoy pensando en usar el enfoque de múltiples hilos, pero la pregunta es, ¿cuántos hilos debo usar? Quiero decir, ¿qué orden de magnitud? 10, 500, 12400?

Hay algunos problemas de sincronización, cada subproceso debe devolver una estructura de valores (que se acumulan para cada archivo) y estos se agregan a una estructura "global" para obtener los datos generales. Me doy cuenta de que algunos subprocesos podrían "tener hambre" debido a la sincronización, pero si solo es una operación de adición, ¿importa?

estaba pensando en

for(each file f in directory){

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

Esto está en HP - UX, pero no podré probarlo a menudo, ya que es un servidor remoto y bastante inaccesible.

Respuestas a la pregunta(15)

Su respuesta a la pregunta