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



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

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

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

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



  • @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, когда отработали потоки.

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


Log in to reply