Сколько потоков нужно, чтобы сделать их плохим выбором?

Я должен написать небольшую программу на C ++, используя boost :: thread.

Проблема в том, чтобы обработать большое (возможно, тысячи или десятки тысяч. Возможны сотни и миллионы) большое количество (возможно) больших файлов. Каждый файл независим от другого, и все они находятся в одном каталоге. ЯЯ думаю об использовании многопоточного подхода, но вопрос в том, сколько потоков я должен использовать? Я имею в виду, какой порядок? 10, 500, 12400?

Есть некоторые проблемы синхронизации, каждый поток должен возвращать структуру значений (которые накапливаются для каждого файла), и они добавляются в "Глобальный" структура, чтобы получить общие данные. Я понимаю, что некоторые темы могутпроголодаться" из-за синхронизации, но если этотолько операция добавления, это имеет значение?

Я думал о

for(each file f in directory){

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

Это в HP - UX, но я выиграля не смогу часто это проверять, так какЭто удаленный и довольно недоступный сервер.

Ответы на вопрос(15)

Ваш ответ на вопрос