Пропустить первый тик бара. [РЕШЕНО] - страница 4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Viktorov
35771
Alexey Viktorov  
Dmitry Fedoseev:
Все равно, что вилами на воде писать.

Как это понять?

Igor Zakharov
27710
Igor Zakharov  
Alexey Viktorov:

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

Должно работать, с флагами FILE_READ|FILE_WRITE при открытии файла только в OnInit, без переоткрытия перед чтением. По крайне мере, я так делал и не видел ошибки открытия или чтения/записи.

Alexey Viktorov
35771
Alexey Viktorov  
Igor Zakharov:

Должно работать, с флагами FILE_READ|FILE_WRITE при открытии файла только в OnInit, без переоткрытия перед чтением. По крайне мере, я так делал и не видел ошибки открытия или чтения/записи.

Дело вовсе не в этом. Ведь важна свежая запись, а не факт открытия и прочтения устаревшего. А если это вообще первая запись и файла вообще ещё нет? Или в файле интересна только одна запись и писатель открывает только с флагом FILE_WRITE чтобы перезаписать файл не сохраняя имевшуюся там запись? Это всё не из той оперы. Просто на открытии нового бара должна быть запись и только потом чтение этой записи. Следовательно если на пару миллисекунд читатель опережает писателя, то хоть тресни, он либо прочтёт не то что должно быть, либо ошибка чтения файла. Другого не дано.

Igor Zakharov
27710
Igor Zakharov  
Пишите ещё и время. Если не изменилось при повторном чтении - данные старые, читать ещё раз.
Alexey Viktorov
35771
Alexey Viktorov  
Igor Zakharov:
Пишите ещё и время. Если не изменилось при повторном чтении - данные старые, читать ещё раз.

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

Mislaid
665
Mislaid  
Igor Zakharov:
Пишите ещё и время. Если не изменилось при повторном чтении - данные старые, читать ещё раз.

У меня один писатель. Много читателей. На писателя наложены ограничения по числу постов в секунду. Читатели все равно сталкиваются с проблемами.

Решение оказалось простым. Файл открывается с опцией FILE_SHARE_READ. Писатель пишет в конец файла контрольную сумму, алгоритм вычисления которой известен всем читателям. Если контрольная сумма совпала, то считается, что данные актуальны.

Alexey Viktorov
35771
Alexey Viktorov  
Mislaid:

У меня один писатель. Много читателей. На писателя наложены ограничения по числу постов в секунду. Читатели все равно сталкиваются с проблемами.

Решение оказалось простым. Файл открывается с опцией FILE_SHARE_READ. Писатель пишет в конец файла контрольную сумму, алгоритм вычисления которой известен всем читателям. Если контрольная сумма совпала, то считается, что данные актуальны.

Расшаренное чтение вообще не обсуждается. Это как "отче наш" при работе нескольких читателей и даже одного писателя и одного читателя. Хотя, кому-то может это ваше сообщение принести пользу.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий