@m4zuper Ну например на скрине видно , adbtc
Сторожевой таймер для потоков
-
Всем привет!
Возможно ли организовать "сторожевой таймер" в отдельном потоке.
На примере микроконтроллера пик объясню:- есть тело основной программы которое выполняется за определённое количество тиков
- есть "сторожевой таймер" - это таймер который щёлкает в фоне и когда идёт его переполнение он делает ресет мк так как считается что основная программа зависла
- в основной программе есть строка сброса этого таймера и если всё идёт по плану то таймер периодический будет сбрасываться и никогда не настанет его переполнение.
По такому же принципу хотелось бы реализовать "сторожевой таймер" в басе
То есть как это вижу я:
1 и 2 поток выполняют какие-то действия и среди них есть строка записи в глобальную переменную "ресет"
3 поток крутится в цикле, который проверяет глобальные переменные 1 и 2 на признак "ресет". Если этого признака нет добавляет 1 к своей локальной переменной "перезагрузка". После спит 1 секунду и снова проверяет глобальные переменные. Когда локальная переменная "перезагрузка" станет равной 60 то выходит из цикла и принудительно переводит потоки 1 и 2 например в ручное управление браузером или ещё в какую-то другую логику устранения этого "зависания"
Для меня не составит труда написать сам таймер в 3-ем потоке. Но я не нашёл как сделать прерывания выполнения программы в 1 и 2 потока из 3-его и перевод их например в ручной режим.
Подскажите пожалуйста возможно ли такое организовать средствами бас и если да то буду благодарен если покажите в каком направлении копать
-
@Oleg_Pvk Полное прерывание скрипта - "Логика скрипта" - "Прервать скрипт". Завершит все потоки, если условия будут выполнены.
Если нужно прерывание 1 или любого другого потока. То "Статистика скрипта" - "Номер потока" Если [[номер потока]] == 1, то работаем по логике в этом ифе проверяем условия, есть ли наросты в глобальной переменной, если есть то саксес или фэил или ручное управление, там логику свою пропишешь.
-
@moonsoon Я не догоняю ((( как из третьего потока прервать первый ?
в статистике скрипта любая функция относится только к текущему потоку. А мне нужно чтобы третий поток следил за глобальной переменной и если есть нарост прерывал\переводил в ручное управление первый/второй поток вне зависимости чем они сейчас заняты -
@Oleg_Pvk said in Сторожевой таймер для потоков:
@moonsoon Я не догоняю ((( как из третьего потока прервать первый ?
Если в первом потоке используется браузер, убить этот процесс браузера из любого потока и первый поток упадет.