Сам факт изменения файла. Делал индикатор, который работает с таймером и пересчитывает данные лишь при изменении файла. Сейчас точно не скажу - нет под рукой, но покопайте в эту сторону
Это не решает озвученную проблему:
И тут возникает проблема, а что, если мастер еще не все записал, а слейвы уже начали читать
Это не решает озвученную проблему:
А-а-а, СемёёёнСемёёёныч...
1. А возможно на лету менять флаг совместного доступа к файлу?
2. У мастера сделать флаг разрешения чтения файла слейвами, а слейвы должны сигналить флагами о завершении чтения.
Сам факт изменения файла. Делал индикатор, который работает с таймером и пересчитывает данные лишь при изменении файла. Сейчас точно не скажу - нет под рукой, но покопайте в эту сторону
Дополнительный файл-семафор либо специальная метка в конце файла с данными, означающая корректность записи. Лучше доп. файл, чтоб зря не читать (возможно) большой файл данных.
А-а-а, СемёёёнСемёёёныч...
1. А возможно на лету менять флаг совместного доступа к файлу?
2. У мастера сделать флаг разрешения чтения файла слейвами, а слейвы должны сигналить флагами о завершении чтения.
На мой взгляд, разумнее не писать метку в начало файла, а создавать и удалять файл-метку. Мастер - перед записью создает файл-метку, и начинает запись. Когда все посчитано и записано - файл-метка удаляется.
Слейвы - перед чтением - проверяют существование файл-метки, и считывают данные только в случае его отсутствия.
Дополнительный файл-семафор либо специальная метка в конце файла с данными, означающая корректность записи. Лучше доп. файл, чтоб зря не читать (возможно) большой файл данных.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть такая задача. На компе работают 10 терминалов, на каждом крутится один и тот же советник. Нет смысла всем 10 выполнять довольно тяжелые вычисления. Хочу сделать одного Master, остальные Slave's. Мастер делает расчеты и пишет инфу в общий файл, слейвы ее читают и далее отрабатывают "легкую" часть алгоритма.
И тут возникает проблема, а что, если мастер еще не все записал, а слейвы уже начали читать? В маркете нельзя использовать Win Api, так бы я мьютекс завел и проблема решена. Пока сделал так - Мастер перед записью данных взводит в самом начале файла флаг типа int, ждет какое-то время, пишет данные, потом флаг сбрасывает. Тоже криво и небезопасно, но лучше не придумал. Ну нет в MQL4/5 атомарных операций.
Кто чего посоветует/покритикует?