Еще раз про многопоток и текстовые файлы

ZULI

Client
Регистрация
09.09.2020
Сообщения
430
Реакции
165
Баллы
43
Сделал шаблон, в нем есть одна особенность, он сохраняет/берет в/из текстового файла последний обработанный ID и сохраняет в текстовый лог результат работы.

Вопрос в следующем, если я запущу 5-10 потоков случится история когда один поток займет файл для сохранения а остальные не смогут в него сохранить (лог файл), что тогда будет, просто я недополучу лог или шаблон станет или он запишет когда файл освободится?
И еще более плохая история когда потоки будут брать один и тот же ID для работы.

Были идея делать клоны шаблона и указывать диапазоны, вариант рабочий, но хотелось бы без этих извращений.

Кто уже с таким имел дело, как обходили эту проблему?
 
И еще более плохая история когда потоки будут брать один и тот же ID для работы.
будут

нужно как-то помечать айди, которые обработаны или только берутся в обработку. И делать это нужно внутри залоченного участка кода c#. Внутри этого же участка нужно и сам айди брать
 
Мысль родилась, создавать локально файл lock_$ID и потом при взятие ID проверять на наличие файла. по моему неплохой локальный вариант. Остается только вопрос с одновременным доступом на запись к файлу с последним обработанным ID
 
Используйте таблицы, либо сразу базы данных (особенно, когда запись данных со стороны).
 
Используйте таблицы, либо сразу базы данных (особенно, когда запись данных со стороны).

База есть, но она используется по API и нужно локальную метку какую-то. Пока сделал так:

Беру последний ID, прибавляю +1 и сохраняю это обратно в файл. Потоки запускаются по очереди, поэтому пока не конфликтуют.

Пока тестирую, в 5 потоков вроде ошибок нет, буду увеличивать и пробовать, в принципе 5-10 потоков меня устроит.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)