@Bigma Оказывается все так просто)) Спасибо вам большое! Без вас бы еще час просидел наверное...
Как из одного потока, закрыть другой?
-
@IdAlexBlack По идее вот так

Если я правильно понял вопрос. -
@IdAlexBlack Функция, запущенная асинхронно, создаёт свой поток. То есть, если вы из функции "Main" асинхронно запускаете некую функцию "example", то все действия из функции "example" будут выполняться в отдельном потоке. Соответственно, если действия "fail" или "success" буду при определённых условиях вызываться в функции "example", то они будут прерывать именно тот поток, в котором эта функция выполняется. То есть в вашем случае, это будет НЕ основной поток.
-
@IdAlexBlack said in Как из одного потока, закрыть другой?:
Всем привет.
Есть скрипт, который выполняет действия. В этом скрипте запущена асинхронная функция, которая параллельно скрипту чекает глобальную переменную.
После изменения глобальной переменной, нужно чтобы функция закрыла, остановила или перезагрузила поток из которого она запущена.Пример:
Регистратор аккаунтов запущен на 1 модеме в 4 потока.
У каждого потока, запущена своя асинхронная функция, которая ждёт, когда изменится глобальная переменная.
Поток 1 завершает регистрацию и меняет глобальную переменную.
В асинхронной функции это заметили.Вопрос
Как из асинхронной функции остановить поток, которому она принадлежит?Спасибо.
"Прервать асинхронную функцию" возможно только вызванную через действие "Вызов функции асинхронно" зная при этом id необходимого потока
-
@IdAlexBlack said in Как из одного потока, закрыть другой?:
@Fox
Мне нужно завершить именно мейн функцию, так как в асинхронном потоке сменилась глобальная переменная и мне нужно рестартануть то, что происходит в мейн потоке.В мейн потоке идёт рега и нужно чтобы она перезапустилась с нуля.
в таком случае проверяйте содержимое глобальной переменной. Но мой вам совет, пересмотрите логику скрипта, опыт подсказывает, что вы скорее всего городите огород
-
@DoctorKrolic Да, я это знаю. Всё перечитал уже. )))
Поэтому хочется иметь возможность из одного потока завершить другой поток.
-
@IdAlexBlack said in Как из одного потока, закрыть другой?:
@Fox
Возможно да.
Но у меня есть 4 потока.1 завершил регистрацию.
Как перезапустить остальные 3 потока по другому?Вы пытаетесь решить задачу, которую вы сами себе поставили неправильной логикой решения изначальной задачи. Для чего всё это, что вы хотите сделать в итоге?
-
@Fox said in Как из одного потока, закрыть другой?:
@IdAlexBlack said in Как из одного потока, закрыть другой?:
@Fox
Возможно да.
Но у меня есть 4 потока.1 завершил регистрацию.
Как перезапустить остальные 3 потока по другому?Вы пытаетесь решить задачу, которую вы сами себе поставили неправильной логикой решения изначальной задачи. Для чего всё это, что вы хотите сделать в итоге?
Ох уж эта логика )))
-
@Fox
Задача логичная. )))Регистрация идёт в 4 потока на одном модеме из-за того что маленький пробив.
После зарегистрированного аккаунта, поток перезагружает модем, а остальные потоки не могут продолжить регистрацию, так как внешний IP сменился.
Именно поэтому я чекаю перезагружен модем или нет.
Если перезагрузился, я должен начать заново все потоки.
Как-то так. )))
-
@UserTrue said in Как из одного потока, закрыть другой?:
@Fox said in Как из одного потока, закрыть другой?:
@IdAlexBlack said in Как из одного потока, закрыть другой?:
@Fox
Возможно да.
Но у меня есть 4 потока.1 завершил регистрацию.
Как перезапустить остальные 3 потока по другому?Вы пытаетесь решить задачу, которую вы сами себе поставили неправильной логикой решения изначальной задачи. Для чего всё это, что вы хотите сделать в итоге?
Ох уж эта логика )))
Пользователи строят логику скрипта отталкиваясь от имеющихся знаний и зачастую сами себе создают проблемы. А вопросы задают исключительно как решить именно последнюю проблему.
@IdAlexBlack said in Как из одного потока, закрыть другой?:
@Fox
Задача логичная. )))Регистрация идёт в 4 потока на одном модеме из-за того что маленький пробив.
После зарегистрированного аккаунта, поток перезагружает модем, а остальные потоки не могут продолжить регистрацию, так как внешний IP сменился.
Именно поэтому я чекаю перезагружен модем или нет.
Если перезагрузился, я должен начать заново все потоки.
Как-то так. )))
Используйте цикл в main, который проверяет "пробив", если "пробив" есть, то поток завершает все вызванные потоки, перезагружает модем и снова запускает потоки. Для чего перезапуск то?
-
@Fox said in Как из одного потока, закрыть другой?:
Пользователи строят логику скрипта отталкиваясь от имеющихся знаний и зачастую сами себе создают проблемы. А вопросы задают исключительно как решить именно последнюю проблему.
Ага, я для себя давно уяснил, если я делаю, что-то в чем потом сложно разобраться, то скорей всего я что-то делаю не так ))
-
@UserTrue said in Как из одного потока, закрыть другой?:
@Fox said in Как из одного потока, закрыть другой?:
Пользователи строят логику скрипта отталкиваясь от имеющихся знаний и зачастую сами себе создают проблемы. А вопросы задают исключительно как решить именно последнюю проблему.
Ага, я для себя давно уяснил, если я делаю, что-то в чем потом сложно разобраться, то скорей всего я что-то делаю не так ))
Это применимо почти ко всему, я так угловой шкаф собирал
:D -
@Fox нашёл более точное описание того, что нужно. Ваш комментарий там тоже есть.
https://community.bablosoft.com/topic/2239/принудительное-завершение-потока
-
@IdAlexBlack said in Как из одного потока, закрыть другой?:
@Fox Перезапуск, как я писал выше, из-за того, что из-за смены IP рега не идёт дальше.
Я пробовал создавать скрипт через вызов функции в несколько потоков, но почему-то мейн не завершает потоки, созданные в функции.
Я повторю:
@Fox said in Как из одного потока, закрыть другой?:
"Прервать асинхронную функцию" возможно только вызванную через действие "Вызов функции асинхронно" зная при этом id необходимого потока
прервать по другому нельзя. Вызов функции в несколько поток прервать можно всю через действие "Прервать Скрипт"


Тестовый скрипт