У меня есть большой файл (больше, чем ОЗУ, я не могу сразу прочитать его целиком), и мне нужно обработать его построчно (на С++). Я хочу использовать несколько ядер, предпочтительно Intel TBB или Microsoft PPL. Я бы предпочел избегать предварительной обработки этого файла (например, разбивать его на 4 части и т. д.).
Я думал о чем-то вроде использования 4 итераторов, инициализированных до (0, n/4, 2*n/4 3*n/4) позиций в файле и т.д.
Является ли это хорошим решением и существует ли простой способ его достижения?
Или, может быть, вы знаете какие-нибудь библиотеки, поддерживающие эффективное параллельное чтение потоков?
обновить:
Я делал тесты. IO не является узким местом, ЦП. И у меня много оперативной памяти для буферов.
Мне нужно разобрать запись (размер var, около 2000 байт каждая, записи разделены уникальным символом '\0'), проверить ее, выполнить некоторые вычисления и записать результат в другой файл (ы)
(0, n/4, 2*n/4, 3*n/4) + iбудет включать как минимум четыре обращения к диску, а ввод-вывод может стать узким местом. - person Piskvor left the building   schedule 20.05.2011