Синхронизация последовательных действий.

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
Задача, разными проектами однопоточными(допустим регистрация аккаунтов на разных сервисах) началом будет старт всех одновременно потоков(к примеру их 10)
Концом должно быть стать, завершение самой долгой регистрацией. Как только завершилось, Процесс повторяем.

Не могу придумать как их "связать". Может кто то что то подобное придумывал. Может как то их "связать" на одном отдельном потоке?

Как мне ведется, нужен триггер какой то, но какой ????
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113
я делал так. добавлял в список строку с идентификатором, у меня это была почта использованная для реги, и на каждом логическом шаге добавлял |step1-good или |step1-bad
получалось в виде mail|step1-good|step2-good|step3-good
при старте шаблона я получал по идентификатору строку, разсплитевовывал и узнавал на какой шаг для данного аккаунта мне идти. переходы деллал через цепочку IF где каждый проверял конкретный свой шаг.
 
  • Спасибо
Реакции: sergio197675 и baracuda

finista

Client
Регистрация
10.10.2012
Сообщения
364
Благодарностей
57
Баллы
28
я делаю через базу данных, разбиваю на много мелких шаблонов, каждый отчитывается в mysql и каждый мониторит (ждет) свое задание. Только так смог добиться стабильности в расписании и ушли ошибки.
 
  • Спасибо
Реакции: baracuda

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
Решил всё сделать через один общий шаблон(поток). он задаёт моду "всем". к примеру может проксю выбирать или ещё чего.
каждый отдельный шаблон при старте проверяет текстовый файл(каждую секунду). на count=№ как только достигнуто нужное число, все стартуют, отрабатывают, и по завершению увеличивают count +1. Начинают стартовать по новой, но та как count№ не достигнут нужный, стоят ждут за счёт if проверки.
Основной шаблон так же мониторит данное число, как только видит count№ уходит по if на паузу № сек. что бы все шаблоны успели прочитать текстовый файл.. теперь вопрос, а если запись файла 2 шаблонов случайно пересечётся ?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113
Решил всё сделать через один общий шаблон(поток). он задаёт моду "всем". к примеру может проксю выбирать или ещё чего.
каждый отдельный шаблон при старте проверяет текстовый файл(каждую секунду). на count=№ как только достигнуто нужное число, все стартуют, отрабатывают, и по завершению увеличивают count +1. Начинают стартовать по новой, но та как count№ не достигнут нужный, стоят ждут за счёт if проверки.
Основной шаблон так же мониторит данное число, как только видит count№ уходит по if на паузу № сек. что бы все шаблоны успели прочитать текстовый файл.. теперь вопрос, а если запись файла 2 шаблонов случайно пересечётся ?
работа с общим ресурсом всегда должна идти через локирование. иниче будет каша.
 

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 694
Благодарностей
940
Баллы
113
Как мне ведется, нужен триггер какой то, но какой ????
Что-то подобное делал недавно https://cloud.mail.ru/public/GEKA/CT8wFg3Pz

Берем названия шаблонов которые надо запускать в список (для дальнейшей работы первым делом - копируем список в буфер, чтоб не дергать диск).

Дальше запускаем шаблоны и чекаем их статус чере заданный промежуток времени по этой статье.

Когда все тормознули - выполняем свою задачу.
 
  • Спасибо
Реакции: baracuda и sergio197675

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 694
Благодарностей
940
Баллы
113
я делаю через базу данных, разбиваю на много мелких шаблонов, каждый отчитывается в mysql и каждый мониторит (ждет) свое задание
не думали в конкурсе шаблонов поучаствовать?
 
  • Спасибо
Реакции: djaga

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