Возможно ли так получать глобальную переменную?

Поддержка
  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    "постоянного" наблюдения за значением переменной без обращения к ней?

    нет. в данной комплектации нету. разве что заказать кому сделать на c++, возможно.

  • Не очень понимаю, как реализовать через асинхронную функцию, но в описании функционала есть нечто подобное.

  • @tet-vivi said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    "постоянного" наблюдения за значением переменной без обращения к ней?

    нет. в данной комплектации нету. разве что заказать кому сделать на c++, возможно.

    заказываю. кто может сделать - пишите.

  • @kuzkuz а во время "постоянного" наблюдения поток что-то должен делать?
    что должно происходить при изменении переменной?

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    Скрипт работает в несколько потоков.
    Есть глобальная переменная, которая меняется время от времени (рандомные промежутки).

    Существует ли такая возможность в БАС не строить такой алгоритм работы

    кубик
    запросить переменную
    кубик
    запросить переменную
    кубик
    запросить переменную

    Т.е. есть ли возможность у любого из потоков "постоянного" наблюдения за значением переменной без обращения к ней?
    ps или при изменении переменной в поток приходит сигнал ....

    Можно изменить функцию _sa() что бы после каждого действия проверялась глобальная переменная, но проблема в том, что функция синхронная и добавить какие либо асинхронные действия BAS в неё не получится.
    Так же можете использовать цикл "while" с условием из глобальной переменной, это условие будет проверятся перед каждой итерацией.

  • @tet-vivi said in Возможно ли так получать глобальную переменную?:

    @kuzkuz а во время "постоянного" наблюдения поток что-то должен делать?

    Поток должен делать много чего, перебирать урл-ы, загружать нужные, брать данные

    что должно происходить при изменении переменной?

    перенастраивать браузер

  • @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

    Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip

  • @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

    Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip

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

    и тут начинается проблема в периодах вызова функции проверки ip
    вызывать каждую секунду, три секунды, 5 или 20 сек...
    и это я описал простой алгоритм из 5 кубиков, а если кубиков 300

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

    Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip

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

    и тут начинается проблема в периодах вызова функции проверки ip
    вызывать каждую секунду, три секунды, 5 или 20 сек...

    ни чего не понял. Если вы грузите страницу, зачем вам проверять глобальную переменную?

  • @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

    Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip

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

    и тут начинается проблема в периодах вызова функции проверки ip
    вызывать каждую секунду, три секунды, 5 или 20 сек...

    ни чего не понял. Если вы грузите страницу, зачем вам проверять глобальную переменную?

    в глобальной переменной ip прокси.
    если она поменялась, надо обновить настройки браузера.
    так понятнее?

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

    Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip

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

    и тут начинается проблема в периодах вызова функции проверки ip
    вызывать каждую секунду, три секунды, 5 или 20 сек...

    ни чего не понял. Если вы грузите страницу, зачем вам проверять глобальную переменную?

    в глобальной переменной ip прокси.
    если она поменялась, надо обновить настройки браузера.
    так понятнее?

    Немного понятнее. Для чего обновлять настройки браузера? Ведь если сменился ip, то работу лучше прекратить и начать по новой. В этом плане идеально подходит асинхронный вызов функции

  • @Fox said in Возможно ли так получать глобальную переменную?:

    Немного понятнее. Для чего обновлять настройки браузера? Ведь если сменился ip, то работу лучше прекратить и начать по новой. В этом плане идеально подходит асинхронный вызов функции

    Хорошо. Сейчас опишу подробно

    Берем урл. Загружаем в браузере. Далее 150 кубиков неких действий с урл/браузером. Манипуляции которые в 1 сек не уложить. Нужно делать что то 5 сек, что то 30 сек, что то 3 минуты.
    ps то что больше 5 сек можно зациклить по 5 сек, чтобы если нужно что то делать между циклами делалось.... но это не важно....

    Вопрос только в том
    Как в данном случае своевременно получать инфу о том что ip сменился и прерывать поток?

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    Немного понятнее. Для чего обновлять настройки браузера? Ведь если сменился ip, то работу лучше прекратить и начать по новой. В этом плане идеально подходит асинхронный вызов функции

    Хорошо. Сейчас опишу подробно

    Берем урл. Загружаем в браузере. Далее 150 кубиков неких действий с урл/браузером. Манипуляции которые в 1 сек не уложить. Нужно делать что то 5 сек, что то 30 сек, что то 3 минуты.
    ps то что больше 5 сек можно зациклить по 5 сек, чтобы если нужно что то делать между циклами делалось.... но это не важно....

    Вопрос только в том
    Как в данном случае своевременно получать инфу о том что ip сменился и прерывать поток?

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

  • @Fox Хорошо.
    А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
    В таком случае надо обновить настройки браузера, но продолжить работу потока.

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox Хорошо.
    А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
    В таком случае надо обновить настройки браузера, но продолжить работу потока.

    в таком случае только циклическая проверка с глобальной переменной

  • @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox Хорошо.
    А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
    В таком случае надо обновить настройки браузера, но продолжить работу потока.

    в таком случае только циклическая проверка с глобальной переменной

    Как в данном случае своевременно получать инфу о том что ip сменился ? Только гадать, поставить через каждый кубик получение инфы о глобальной переменной?

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox Хорошо.
    А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
    В таком случае надо обновить настройки браузера, но продолжить работу потока.

    в таком случае только циклическая проверка с глобальной переменной

    Как в данном случае своевременно получать инфу о том что ip сменился ? Только гадать, поставить через каждый кубик получение инфы о глобальной переменной?

    Давайте рассуждать логически, вам нужно в зависимости от значения переменной произвести какие то действия, так? Значит что то должно периодически сверять глобальную и локальную переменную.
    Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.

    Мне подсказывает опыт, что задача решается не с того конца. Проще было бы самому менять внешний ip, когда отработали потоки.

  • @Fox

    Проще было бы самому менять внешний ip, когда отработали потоки.

    Да. Но это дорого.

  • @Fox said in Возможно ли так получать глобальную переменную?:

    Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.

    1. нельзя прерывать поток, если браузер открыт, обязательно надо довести до завершения, проделав все этапы.
    2. что за функция sa, которая вызывается автоматически после каждого действия? я думаю мне бы это подошло. Она бы вызывала ip.bablosoft и чекала то что нужно. Если произошла смена, цеплялась бы перенастройка браузера.