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