Сколько потоков нужно, чтобы сделать их плохим выбором?
Я должен написать небольшую программу на 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, но я выиграля не смогу часто это проверять, так какЭто удаленный и довольно недоступный сервер.