@TemaKam

Будут ли ошибки при многопоточной записи в 1 файл?

Если в нескольких потоках идет запись в один файл - могут ли возникнуть ошибки, по типу что когда-нибудь 2 потока одновременно в 1 позицию начнут писать?

Если да, то как этого избежать, но чтобы запись все равно была в потоках?
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 2
HemulGM
@HemulGM
Delphi Developer, сис. админ
Легко это организовать. Ставишь флаг "я пишу", если поток, который собирается писать видит, что флаг стоит, то ждёт, пока флаг пропадёт, затем сам ставит флаг, пока не допишет свои данные.
Ответ написан
@AstraVlad
Финансист, консультант, программист-любитель
Я бы наверное сделал отдельную очередь и поток для записи. Грубо говоря: каждый поток-обработчик ставит в очередь сообщения вида: "Начало записи", "Блок данных, которые должны идти последовательно", "Еще блоки"... "Конец записи". А поток, который сидит на записи, выбирает из очереди эти сообщения, собирает из них правильные последовательности данных и записывает целиком в файл. Тогда исключаются и конфликты и перемешивание данных (если это критично).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы