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

 
Dmitry Fedoseev:
Все равно, что вилами на воде писать.

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

 
Alexey Viktorov:

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

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

 
Igor Zakharov:

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

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

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

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

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

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

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

 
Mislaid:

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

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

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

Причина обращения: