Ile wątków potrzeba, aby były złym wyborem?

Muszę napisać niezbyt duży program w C ++, używając boost :: thread.

Problem polega na tym, że przetwarzamy duże (może tysiące lub dziesiątki tysięcy. Możliwe są również setki i miliony) liczby (prawdopodobnie) dużych plików. Każdy plik jest niezależny od drugiego i wszystkie znajdują się w tym samym katalogu. Myślę o użyciu wielowątkowego podejścia, ale pytanie brzmi: ile wątków należy użyć? Mam na myśli, jaki rząd wielkości? 10, 500, 12400?

Istnieją pewne problemy z synchronizacją, każdy wątek powinien zwracać strukturę wartości (które są gromadzone dla każdego pliku), a te są dodawane do struktury „globalnej”, aby uzyskać ogólne dane. Zdaję sobie sprawę, że niektóre wątki mogą „być głodne” z powodu synchronizacji, ale czy to tylko operacja dodawania, czy to ma znaczenie?

Myślałem o tym

for(each file f in directory){

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

To jest w HP - UX, ale nie będę w stanie przetestować go często, ponieważ jest to zdalny i dość niedostępny serwer.

questionAnswers(15)

yourAnswerToTheQuestion