Глобальные переменные.
-
Решил, блин, называется сэкономить ресурсы сервера.. Скрипт работал в 30 окон и каждый парсил свою страничку. Но я решил ускорить процесс отклика скрипта на события страницы. Так как через прокси данные идут медленнее, выделил я первый поток именно для мониторинга страницы, и через глобальные переменные сделал общение между потоками..
Тут и появились странности. Стандартный цикл проверки события на экране выдавал булево в переменную, далее скрипт через if уже выполнял действия. Дак этот цикл выгружая данные без задержек в глобальную переменную вешает BAS даже на стационарном, мощном компе. При том, мониторинг ресурсов показывает использование ресурсов не превышает 30%..
Я думал глобальные переменные можно использовать так же спокойно, как и обычные, оказалось всё не так просто.
@support Может ли постоянная запись или чтение глобальной переменной в многопотоке вешать BAS?
-
@support Нашёл почему зависает. Но исправить пока не могу.
Если в цикле есть условие с данными из глобальной переменной, то BAS зависает.
Скрипт с цикламиА вот если не использовать циклы, то скрипт не зависает
Скрипт без цикловС метками тоже зависает
Скрипт с меткамиЗависает даже в условиях не использовать глобальные переменные
Скрипт без глобальных переменных в условиях
-
@Fox said in Глобальные переменные.:
Если в цикле есть условие с данными из глобальной переменной, то BAS зависает.
сделай в начале цикла while минимальную задержку, я поставил 1 миллисекунду, и скрипт нормально отрабатывает.
-
@santilo Спасибо! Ларчик то, как говорится, просто открывался :)
С минимальной задержкой работает
-
Похоже пока рано от зенки отказываться.
Наверно через 1-2 года BAS будет работать стабильно и будет дока по API?
Очень привлекает возможность уже сейчас использовать BAS под WINE.
А ZennoBox никто под WINE не пробовал?
Целиком ZennoPoster, судя по отзыву не работает в WINE:
https://appdb.winehq.org/objectManager.php?sClass=application&iId=17892
-
@sanyo BAS работает стабильно, что у Вас не получается?
-
Да я выше по ветке посмотрел, мол виснет без задержки.
Или это нормально для многопотока?
-
@sanyo зависает от вечного цикла без паузы
-
причем зависает только визуально, если посмотреть файлы логов то видно что в это время скрипт работает
-
This post is deleted!
-
Да я выше по ветке посмотрел, мол виснет без задержки.
Да, весь синхронный код выполняется в одном потоке.
Функция лог является синхронной, поэтому такой код должен виснуть.Но у этого подхода есть одно существенное преимущество - не нужно добавлять примитивы для синхронизации для многопоточного кода(локи, мьютексы и т. д.)
Наверно через 1-2 года BAS будет работать стабильно
Работу над БАС я начал в середине 2013, над стабильность я работал в первое время развивая среду и параллельно выпуская софт на нем. Сейчас ядро я почти не трогаю, а новый функционал добавляю через систему модулей.