Как работать с многопоточностью

Fakie

Client
Регистрация
04.03.2021
Сообщения
5
Благодарностей
0
Баллы
1
Всем привет, недавно начал работать с zennoposter и пока не смог найти нормального объяснения по работе с многопоточностью.
Я так понял если мне необходимо проделать какие-либо действия в несколько потоков, например спарсить ссылки, то я должен создать список с этими ссылками и при взятии ссылки удалять ее из списка, таким образом избегая работы разных потоков с одними и теми же ссылками.
Но как быть если этот список я должен получить в процессе работы этой программы, а потом уже работать с ним, получается нужно каким-то образом сделать так, чтобы программа в один поток подготовила список ссылок, а потом в многопоточном режиме парсила ссылки из него.
Как можно это реализовать? Так же есть вопрос, может ли в многопоточном режиме выполняться проект в проекте, а основной проект в один поток?
 

Phoenix78

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

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

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Создай файл, напиши туда слово, любое, например парсинг, запускаешь шаблон, само собой привязываешь, потом получить строку из списка содержащею слово парсинг, без удаления, если ты слово получаешь, уходишь на кубик if 1==2 - это чтобы не портить сколько шаблон выполнил.
Если слово не получаешь, то идешь парсить ссылки, ссылки спарсил, привязываешь опять файл, и получить слово парсинг с удалением.
Но и желательно лочить
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Но как быть если этот список я должен получить в процессе работы этой программы, а потом уже работать с ним, получается нужно каким-то образом сделать так, чтобы программа в один поток подготовила список ссылок, а потом в многопоточном режиме парсила ссылки из него.
Как можно это реализовать?
Я бы это организовал с помощью ещё одного шаблона: первый шаблон подготавливает в один поток ссылки, сохраняет их в список. В конце работы с помощью экшена Запуск программ и запускающего bat'ника (ПКМ по проекту в ZennoPoster=>Создать bat файл) запускает второй шаблон, который уже парсит всё в многопоточном режиме.

Так же есть вопрос, может ли в многопоточном режиме выполняться проект в проекте, а основной проект в один поток?
Нет.
 
  • Спасибо
Реакции: Fakie

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