Самый эффективный способ частого (каждые 5 секунд) обновления / обслуживания файлового / векторного зеркала? - PullRequest
0 голосов
/ 28 мая 2018

1) У меня есть файл, содержимое которого отражается через контейнер векторного типа.

2) Содержимое файла проверяется (на наличие изменений) каждые 5секунд или около того.

3) Любые изменения, внесенные в файл, приводят к обновлению вектора, что позволяет сохранить зеркало.

4) Содержание вектора отображается на экране в режиме реального времени.

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

Возможные решения:

Использование только базового C ++ и STL.

1) Длина данных файла или позиция последнего чтения.

После каждого чтения сохраняйте последнюю позицию чтения.Любые новые чтения начинаются с последней позиции чтения.

Минусы:

Любые изменения в существующих данных файла останутся незамеченными.

2) Проверка хэша.

После каждого чтениясохраните хэш каждой строки файла, который можно использовать позже для проверки / чтения данных нового файла.

Pro:

Любые изменения содержимого файла отражаются в векторе.

Con:

Каждая строка файла была прочитана, хеширована и сохранена .... дважды!

Издержки по мере увеличения размера файла.

3) Нет проверок.

Не проверяйте ничего, просто прочитайте весь файл и перезаписывайте вектор каждый раз, независимо от изменений содержимого файла.

Pro:

Любые изменения содержимого файла будут отражены в векторе.

Con:

?

1 Ответ

0 голосов
/ 28 мая 2018

если вы работаете в Windows, просто позвольте ОС уведомлять вас об изменениях в отслеживаемой папке.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx

таким образом вам не нужно опрашивать, а также получать информацию оизменения атрибутов файла (например, последняя запись)

как только вы узнаете, что произошло действительное изменение, вы можете прочитать / обновить.

не знаете, как это делается для других операционных систем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...