Действия при удаче или неудаче завершении потока (скрипта)



  • Заметил в api эти функции:

    _on_fail(callback)
    _on_success(callback)
    

    Можно ли вызывать их в скрипте для отработки необходимых действий в случае неудачи или удачи?
    Планируется ли добавление функций OnApplicationEnd (как тут давно просили), OnSuccess, OnFail для потока?
    Были бы очень полезные функции.

    P.S. Вместо OnFail сейчас есть замечательная возможность игнорирования ошибок и самостоятельная их обработка, но все же)



  • @MAKAR
    А как должна работать OnApplicationEnd ?
    Может поможет реализация запуска функции в несколько потоков ? (в данном случае в 1 поток). Тоесть основной блок выполняет действия в несколько потоков, создаете функцию, обзываете ее OnApplicationEnd (для удобства) и вызываете ее в конце в 1 поток.
    OnSuccess обрабатывается также как сейчас Вы обрабатываете OnFail.

    if ![[WAS_ERROR]] ...
    


  • @xclsv То, что они обрабатываются, очевидно. Функция OnApplicationEnd могла бы следить за количеством работающих потоков, когда все они так или иначе завершены, создавала бы новый поток, выполняющий функцию завершения. Например, завершить сторонние программы или выключить ПК. Но без этой функции я не знаю, как гарантированно отследить, в какой момент все потоки завершили работу и пора вызывать завершающую функцию. При успешном завершении можно устанавливать флаги завершения (глобальные переменные), а если произойдет ошибка в браузере, будет таймаут соединения и поток завершится ошибкой,при этом перезапускать поток в проекте не нужно, как установить флаг?
    Есть ли функция, возвращающая количество работающих потоков? Тогда можно было бы выделить один управляющий поток, следящий за состоянием рабочих и в нужном месте вызывал функции, которые не вызывает рабочий поток.



  • @MAKAR
    с новым функционалом делаете так.
    Создаете основную функцию и завершающую.
    Основной функции указываете сколько потоков выполнений и т.д.
    Эта функция обрабатывается, потом выполняется завершающая.
    Профит!



  • @MAKAR said in Действия при удаче или неудаче завершении потока (скрипта):

    @xclsv Функция OnApplicationEnd могла бы следить за количеством работающих потоков, когда все они так или иначе завершены, создавала бы новый поток, выполняющий функцию завершения. Например, завершить сторонние программы или выключить ПК. Но без этой функции я не знаю, как гарантированно отследить, в какой момент все потоки завершили работу и пора вызывать завершающую функцию. При успешном завершении можно устанавливать флаги завершения (глобальные переменные), а если произойдет ошибка в браузере, будет таймаут соединения и поток завершится ошибкой,при этом перезапускать поток в проекте не нужно, как установить флаг?
    Есть ли функция, возвращающая количество работающих потоков? Тогда можно было бы выделить один управляющий поток, следящий за состоянием рабочих и в нужном месте вызывал функции, которые не вызывает рабочий поток.

    Не нужно никаких флагов и функций следящих за работой потоков. Просто делаете многопоточную функцию, а сразу же за ней однопоточную (Ваш OnApplicationEnd ). После выполнения первой многопоточной выполнится вторая однопоточная. Вот и всё решение.



  • @DrPrime @xclsv Спасибо!



  • @DrPrime Как сделать функцию, которая обработается при ручной остановке приложения. К примеру у меня программа работает через тор, если не дождавшись окончания работы программы, сделать её остановку через интерфейс, то потоки тор останутся висеть. а хотелось бы их завершать. с CloseApplication() не разобрался как можно реализовать



  • @graf said in Действия при удаче или неудаче завершении потока (скрипта):

    @DrPrime Как сделать функцию, которая обработается при ручной остановке приложения. К примеру у меня программа работает через тор, если не дождавшись окончания работы программы, сделать её остановку через интерфейс, то потоки тор останутся висеть. а хотелось бы их завершать. с CloseApplication() не разобрался как можно реализовать

    Повесить обработчик на ручную остановку скрипта можно только в веб интерфейсе


Log in to reply