Как правильно организовать логику для многопотока

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
Ребята, подскажите что-нибудь дельное, никак не могу придумать логику.
Суть проекта:
Есть папка с txt списками, в которых лежат ссылки на сайты. Каждый файл имеет своё название (список1, список2, список3 итд).
В каждом списке свой набор урлов, которые после обработки должны попасть в такое же название но xlsx, это всё реализовал.
Как можно в многопотоке брать каждый список и доставать оттуда урлы и работать с ними?

Я сделал так:
48491

Но при многопотоке получаю много дублей строк в xlsx, так как каждый поток берет весь список файлов, потом берет первый файл и работает с ним.
Я думал, что каждый поток будет блокировать свой список, когда берет из него URL, но дубли пролетают всёравно.
Что я делаю не так?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
не получиться работать в многопотоке, не умея лочить общие объекты. это основа.
сделай простой проект по теме локирования и доводи до ума. потом как отработаешь технику применишь на основной шаблон.
не по таблицам, а вообще про лок. тык
хорошая статья . тык
интересное обсуждение работы в локе. тык
 
Последнее редактирование:
  • Спасибо
Реакции: diman

alex1988

Client
Регистрация
13.07.2014
Сообщения
379
Благодарностей
157
Баллы
43

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Не парни. Кубики же автоматом в режиме лока работают, не надо ТС пугать такими словами.
Это автор походу при создания списка к которому периодически привязывает эти файлы не включил чекбокс синхронизации ("Сохранять изменения списка в файл"), вот каждый шаб и берет оттуда строки по очереди, как бы удаляя в своем "виртуальном спике", но соседние потоки не видят этого удаления, так как в физических файлах изменений нет.
 
  • Спасибо
Реакции: masterLomaster

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
Я сейчас сделал отдельным действием получить список файлов.
Затем в многопотоке просто получаю строку файла из этого списка, привязываю его к списку и зациклил шаблон до окончания строк в этом списке. Получается каждый поток берёт себе новый файл и с ним работает, пока его не закончит.
Вроде работает

48495
 
  • Спасибо
Реакции: masterLomaster

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
быстренько накидал шаблончик, который берет первую строку с удалением из таблицы, через кубик. и запустил в многопотоке.
и в самом деле нет ни одного повторения.
блин, а я все на шарпе сижу, а кубики то сила :-)
 
  • Спасибо
Реакции: masterLomaster

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ну можно проверять список файлов на пустоту, и запускать код заполнения только когда он пуст. и вот на входе по хорошему нужен лок через глобальные переменные, что бы когда один шаблон это делает, другие не лезли в этот код. а то может получиться так, что один записал, удалил дубли берет строку с удалением, а другой в это время опять пишет в файл. и удаленная строка опять появляется в файле. и 2-й шаблон как ни в чем не бывало берет ее работает по то му же файлу что и 1-й. вот здесь про лок-замок хорошо написано.
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43

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