Renat:
Да, фактически мы отключили сброс кешей по FileFlush, так как им почти никто не умеет пользоваться, убивает диск и производительность нашей системы.
Мы реализовали очень эффективную буферизацию и сами решаем когда сбрасывать кеши. Цель - производительность и реализация собственных задач платформы.
Если реально хотите сбрасывать данные на диск, то закрывайте файл.
Восхитительный грабли подкинули, хотя бы отразили это в документации или вообще убрали функции раз она не работает. Уверен, что мало кто ожидает такого вот поведения.
Вы можете это проверить самостоятельно
А вы бы могли ответить на безобидный вопрос. Раз я его задал, то самостоятельная проверка для меня не совсем удобна.
В пятёрке FileFlush сделан точно так же, как в четвёрке, а четвёрке уже более 10 лет. Потеря данных грозит только если произошло внезапное отключение питания компьютера через тысячные доли секунды после FileFlush. И то не на 100 процентов
Не надо говорить, что FileFlush не работает! Я ведь предложил Вам проверить самостоятельно.
Проверка простая. В эксперте откройте текстовый файл с расшаренным доступом и пишите в него. Через какой-либо диспетчер файлов смотрите его содержимое, лучше при помощи FAR. По какой-либо кнопке, либо через определённое время сделайте FileFlush. Вы удивитесь - Вы моментально увидите в фаре изменения файла
Ещё никто за эти годы не жаловался на потерю данных после FileFlush или FileClose
Ведь Ренат прямо сказал, что Flush не работает, чего том проверять то. Делом в том, что я в Linux, терминал будет под Вайном, нужно организовать IPC с внешней программой (будет через файлы). Программа берёт мьютекс, пишет в файл, делает сброс и освобождает мьютекс. Следовательно, мне нужно точно знать что буфер сброшен до освобождения мьютекса. FileFlush отпадает, FileClose сможет гарантировать сброс буфера до выхода из функции FileClose, а не через какое-то время, возможно малое (чтобы следующей строкой кода я мог спокойно освободить мьютекс)?
Вы неправильно поняли слова Рената. Но это - обычное дело. Сказано на одном техническом уровне, воспринято совсем на другом уровне.
Так что, просто проверьте. Вам же спокойнее будет
Я, по-моему, абсолютно правильно понял слова Рената. Изначально человек пожаловался на неработающую FileFlush и был ответ, что это нормально, как тут еще понять то можно? Здесь разговор https://www.mql5.com/ru/forum/1111/page1247#comment_1161543.
А Вы могли бы прямо ответить на мой главный вопрос: " FileClose сможет гарантировать сброс буфера до выхода из функции FileClose, а не через какое-то время, возможно малое?"
Я, по-моему, абсолютно правильно понял слова Рената. Изначально человек пожаловался на неработающую FileFlush и был ответ, что это нормально, как тут еще понять то можно? Здесь разговор https://www.mql5.com/ru/forum/1111/page1247#comment_1161543.
А Вы могли бы прямо ответить на мой главный вопрос: " FileClose сможет гарантировать сброс буфера до выхода из функции FileClose, а не через какое-то время, возможно малое?"
Что такое "до выхода из функции FileClose"?
1. будет произведён сброс буфера в файл с последующим его закрытием. Мой мкл поток дождётся полного завершения этимх процедур и вернётся из функции FileClose()
2. терминал получит просьбу от меня закрыть файл. Поток вернётся из FileClose(). Терминал произведёт сброс буфера в файл и его закрытие в удобное для себя время (следовательно, не исключена ситуация при которой поток вернулся из функции, а файл фактические не закрыт и не сброшен).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос: скидывается ли буфер в файл со 100% гарантией до выхода из функции FileFlush() ?