Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Все равно, что вилами на воде писать.
Как это понять?
Но иногда бывает, что писатель ещё не записал, а читатель уже пытается прочесть. В этот момент вылетает ошибка открытия файла.
Должно работать, с флагами FILE_READ|FILE_WRITE при открытии файла только в OnInit, без переоткрытия перед чтением. По крайне мере, я так делал и не видел ошибки открытия или чтения/записи.
Должно работать, с флагами FILE_READ|FILE_WRITE при открытии файла только в OnInit, без переоткрытия перед чтением. По крайне мере, я так делал и не видел ошибки открытия или чтения/записи.
Дело вовсе не в этом. Ведь важна свежая запись, а не факт открытия и прочтения устаревшего. А если это вообще первая запись и файла вообще ещё нет? Или в файле интересна только одна запись и писатель открывает только с флагом FILE_WRITE чтобы перезаписать файл не сохраняя имевшуюся там запись? Это всё не из той оперы. Просто на открытии нового бара должна быть запись и только потом чтение этой записи. Следовательно если на пару миллисекунд читатель опережает писателя, то хоть тресни, он либо прочтёт не то что должно быть, либо ошибка чтения файла. Другого не дано.
Пишите ещё и время. Если не изменилось при повторном чтении - данные старые, читать ещё раз.
Пробовал. Такое решение мне не понравилось, хотя проверка времени записи обязательно присутствует. Ведь приходится читать файл через промежутки времени. А надо только один раз на открытии нового бара. Да плюс ко всему опять-же надо ставить флаг, что такое время прочитано. В общем в понедельник поставлю на проверку уже сформированное решение.
Пишите ещё и время. Если не изменилось при повторном чтении - данные старые, читать ещё раз.
У меня один писатель. Много читателей. На писателя наложены ограничения по числу постов в секунду. Читатели все равно сталкиваются с проблемами.
Решение оказалось простым. Файл открывается с опцией FILE_SHARE_READ. Писатель пишет в конец файла контрольную сумму, алгоритм вычисления которой известен всем читателям. Если контрольная сумма совпала, то считается, что данные актуальны.
У меня один писатель. Много читателей. На писателя наложены ограничения по числу постов в секунду. Читатели все равно сталкиваются с проблемами.
Решение оказалось простым. Файл открывается с опцией FILE_SHARE_READ. Писатель пишет в конец файла контрольную сумму, алгоритм вычисления которой известен всем читателям. Если контрольная сумма совпала, то считается, что данные актуальны.
Расшаренное чтение вообще не обсуждается. Это как "отче наш" при работе нескольких читателей и даже одного писателя и одного читателя. Хотя, кому-то может это ваше сообщение принести пользу.