@Quark_Hell
C++ программист

Как параллельно подгружать файлы в C++?

Суть задачи такова:
Есть 2 потока. В первом в бесконечном цикле крутятся простые задачи, которые не сильно нагружют компьютер, но обязаны выполнятся с чётким фреймрейтом без подлагиваний.

Второй поток чаще все вообще не существует, но создаётся когда нужно прочитать какие-то очень тяжёлые файлы и подгрузить их внутрь первого потока. В этом момент жёсткий диск может стать бутылочным горлышком всей программы, из-за чего первый поток начнёт лагать.

Цель не допустить этого и подгружать файлы с динамичной скоростью чтения, дабы не забить жесткий диск.

Если отойти от абстракции, то наверняка вы знакомы с такой проблемой в видеоиграх, когда при подгрузке сцены игра на пару кадров подвисает. Цель как раз таки избавиться от такого подвисания.

Как это можно сделать?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
У тебя должна быть shared memory для всех потоков-участников этого процесса.
И один из потоков (главный) должен заранее планировать что какие-то части
файлов должны находится в shared memory в нужное время. Технически
для C/C++ это решенная задача. Тут единственное что интересно - это
обсуждать логику главного потока. Тоесть когда и в какой момент времени
главный должен решать что подгружать. А может он передумает и решит
что надо срочно выгружать потому что сюжет игры меняется. Или игрок
будет бегать между 2 левлами через портал и постоянно перегружать
уровни туда-сюда.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы