Вам необходимо провести тестирование. (возможно, в вашем случае стоит использовать несколько потоков; однако в вашем случае загрузка должна быть настолько быстрой, даже последовательной, что ваш средний пользователь выиграл ''Замечание)
Во многих случаях, когда вы имеете дело с файлами среднего размера (например, менее дюжины мегабайт каждый или, возможно, даже с половиной гигабайт каждый), к которым недавно обращались, эти файлы практически находятся в кеш страниц .Таким образом, вы не получите доступ к самому диску, и ваша программа практически работает в ОЗУ (и тогда многопоточность должна быть эффективной).
Кстати, Linux имеет readahead (2) , posix_fadvise (2) , madvise (2) для подсказки подсистеме виртуальной памяти ядра (то есть, чтобы дать подсказки кешу страниц).
Если ваш общий вариант использованиядоступ к самому диску (например, из-за того, что файлы довольно большие или из-за того, что вы не обращались к ним недавно, так что они , а не в кэше страниц), многопоточность не поможет, потому чтоУзкое место становится аппаратным диском.
Помните, что диск (даже SSD) во много тысяч раз медленнее ОЗУ и последовательно выполняет операции ввода-вывода.
Кроме того, вы можете потратить некоторое количествоВремя процессора в разборе файлов.Если для этого требуется значительное количество ресурсов процессора, его стоит запустить в нескольких независимых потоках.