Сторожевой таймер для потоков

Поддержка
  • Всем привет!
    Возможно ли организовать "сторожевой таймер" в отдельном потоке.
    На примере микроконтроллера пик объясню:

    • есть тело основной программы которое выполняется за определённое количество тиков
    • есть "сторожевой таймер" - это таймер который щёлкает в фоне и когда идёт его переполнение он делает ресет мк так как считается что основная программа зависла
    • в основной программе есть строка сброса этого таймера и если всё идёт по плану то таймер периодический будет сбрасываться и никогда не настанет его переполнение.
      По такому же принципу хотелось бы реализовать "сторожевой таймер" в басе
      То есть как это вижу я:
      1 и 2 поток выполняют какие-то действия и среди них есть строка записи в глобальную переменную "ресет"
      3 поток крутится в цикле, который проверяет глобальные переменные 1 и 2 на признак "ресет". Если этого признака нет добавляет 1 к своей локальной переменной "перезагрузка". После спит 1 секунду и снова проверяет глобальные переменные. Когда локальная переменная "перезагрузка" станет равной 60 то выходит из цикла и принудительно переводит потоки 1 и 2 например в ручное управление браузером или ещё в какую-то другую логику устранения этого "зависания"
      Для меня не составит труда написать сам таймер в 3-ем потоке. Но я не нашёл как сделать прерывания выполнения программы в 1 и 2 потока из 3-его и перевод их например в ручной режим.
      Подскажите пожалуйста возможно ли такое организовать средствами бас и если да то буду благодарен если покажите в каком направлении копать
  • @Oleg_Pvk Полное прерывание скрипта - "Логика скрипта" - "Прервать скрипт". Завершит все потоки, если условия будут выполнены.

    Если нужно прерывание 1 или любого другого потока. То "Статистика скрипта" - "Номер потока" Если [[номер потока]] == 1, то работаем по логике в этом ифе проверяем условия, есть ли наросты в глобальной переменной, если есть то саксес или фэил или ручное управление, там логику свою пропишешь.

  • @moonsoon Я не догоняю ((( как из третьего потока прервать первый ?
    в статистике скрипта любая функция относится только к текущему потоку. А мне нужно чтобы третий поток следил за глобальной переменной и если есть нарост прерывал\переводил в ручное управление первый/второй поток вне зависимости чем они сейчас заняты

  • @Oleg_Pvk said in Сторожевой таймер для потоков:

    @moonsoon Я не догоняю ((( как из третьего потока прервать первый ?

    Если в первом потоке используется браузер, убить этот процесс браузера из любого потока и первый поток упадет.

  • 0 Votes
    3 Posts
    457 Views
  • 0 Votes
    2 Posts
    351 Views
  • 0 Votes
    2 Posts
    304 Views
  • 0 Votes
    3 Posts
    478 Views
  • 0 Votes
    6 Posts
    773 Views