Как проверить что конкретные потоки активны?

Поддержка
  • Есть скрипт, который работает в двух независимых потоках
    Один поток делает одну задачу, а второй поток делает совсем другую задачу.

    Иногда один из потоков кращится, в результате скрипт работает только в одном потоке. И только случайно (ну вздумалось мне развернуть свернутый скрипт и посмотреть что с ним) можно увидеть что скрипт работает как бы на половину.

    Какой есть вариант чтоб проверить что оба потока включены и например если один из потоков крашнулись , то выполнить кубик воспроизведения звука?

    Пока что вижу такой вариант: периодически писать в внешний txt файл с каждого потока данные или в глобальную переменную. И если давно не было записи конкретно для этого потока в глобалку или в txt файл , то выполняем кубик воспроизведения звука.

    Есть еще более простые варианты, без таких костылей?

  • @Nikolas в поток добавь запись в бд текущего времени например раз в 5 минут.
    Третим или вторым( как более стабильным) потоком стучись в базу данных периодически с фильтром (отобразить запись, которая была изменена более чем 5 минут назад). Если запись удалось получить - то значит поток, который должен был обновить эту запись - загнулся и можно отправить об этом уведомление в телегу

  • @Nikolas Обернуть функцию в которой выполняется код потока в игнор ошибок . Зачем изобретать велосипед )

  • @Nikolas said in Как проверить что конкретные потоки активны?:

    Какой есть вариант чтоб проверить что оба потока включены и например если один из потоков крашнулись , то выполнить кубик воспроизведения звука?

    Можно в основном потоке запускать функцию/функции в асинхронном режиме и периодически в цикле проверять статус потоков.

    @UserTrue said in Как проверить что конкретные потоки активны?:

    @Nikolas Обернуть функцию в которой выполняется код потока в игнор ошибок

    Я могу написать функцию так, что не то что поток упадет, а сам BAS упадет с грохотом.
    Тут игнорирование ошибки не поможет. Правда и любые другие реализации задачи тоже не помогут.

  • @sergerdn said in Как проверить что конкретные потоки активны?:

    Тут игнорирование ошибки не поможет. Правда и любые другие реализации задачи тоже не помогут.

    Вот именно, да и такого не должно быть в нормальном скрипте. Самый простой и правильный способ это обычный игнор ошибок, все остальное оверхэд.

    full-c39f7580d078cf3136f780138a94e9e2-225095611.jpg

  • @UserTrue said in Как проверить что конкретные потоки активны?:

    Вот именно, да и такого не должно быть в нормальном скрипте.

    Конечно не должно.

    Но я видел совсем разные скрипты, иногда создается впечатление, что люди код пишут точно не руками, а пятой точкой 😂

  • 0 Votes
    2 Posts
    339 Views
  • 0 Votes
    21 Posts
    2103 Views
  • 0 Votes
    2 Posts
    501 Views
  • 0 Votes
    3 Posts
    487 Views
  • 0 Votes
    2 Posts
    995 Views