У меня есть входной файл в моем приложении, который содержит огромное количество информации. Чтение его последовательно и только с одним смещением файла за раз недостаточно для моего использования в приложении. В идеале я хотел бы иметь два потока, которые имеют отдельные и отличные ifstream
чтения из двух уникальных файловых смещений одного и того же файла. Я не могу просто запустить один ifstream
, а затем сделать его копию с помощью его конструктора копирования (поскольку он не копируется). Итак, как мне с этим справиться?
Я сразу могу придумать два способа:
ifstream
для второго потока, открыть его в том же файле. ifstream
в обоих потоках (например, с помощью boost :: shared_ptr <>
). Найдите соответствующее смещение файла, в котором текущий поток в настоящее время интересуется, когда поток получает временной интервал. Один из этих двух методов предпочтителен?
Есть ли третий (или четвертый) вариант, который у меня еще нет. думали о?
Очевидно, что я в конечном итоге ограничен тем, что жесткий диск должен вращаться взад и вперед, но то, что меня интересует (если возможно), - это кэширование диска на уровне ОС одновременно при обоих смещениях файлов.
Спасибо.