Всем привет! Хочу поинтересоваться у знатоков, как читать большой файл несколькими потоками поблочно. Всегда использовал потоки несколько тривиально: закидывал какой-то класс(qt) или функцию(std::thread) в отдельный поток, где-то дожидался ответа или писал в очередь (std::queue), и, собственно, никаких влажных фантазий на тему ускорения вычислений, таки, не совершал. Но тут появилась идея обрабатывать на лету большие куски файла, подумал, вот ведь она, родимая, многопоточность то. Ан нет, 4 дня сижу - херня получается.
Идея такова: разбиваю файл на куски - будь то размер гранулярности страниц в отображении файла или просто буффер; потом несколькими потоками (2-3 не важно), читаю кусками файл. Затык в том, что не понимаю, за что цепляться: пробовал отслеживать позицию в файле(перекидывать ее между потоками), такая же идея с отсчетом размера файла. Может, есть на эту тема статья хорошая или книженция? В интернете все мучают conditional_variable и примеры на двух функциях. Кто-то пишет, что надо просто открыть в каждом потоке этот файл разными дескрипторами и все будет работать. Может, это работает только с сишным подходом открытия файла open(), но ifstream отреагировал отрицательно. Задайте вектор по этой теме, если не трудно