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

ZULI

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

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

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

Кто уже с таким имел дело, как обходили эту проблему?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 599
Баллы
113
И еще более плохая история когда потоки будут брать один и тот же ID для работы.
будут

нужно как-то помечать айди, которые обработаны или только берутся в обработку. И делать это нужно внутри залоченного участка кода c#. Внутри этого же участка нужно и сам айди брать
 

ZULI

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Используйте таблицы, либо сразу базы данных (особенно, когда запись данных со стороны).
 

ZULI

Client
Регистрация
09.09.2020
Сообщения
423
Благодарностей
165
Баллы
43
Используйте таблицы, либо сразу базы данных (особенно, когда запись данных со стороны).
База есть, но она используется по API и нужно локальную метку какую-то. Пока сделал так:

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

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

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