Так корректно или кривая реализация? Глобальная переменная



  • Подскажите, пож-та, так корректно?

    кубик if
    typeof([[GLOBAL:TABLE_CHISTIM]]) == "undefined" | [[GLOBAL:TABLE_CHISTIM]] == "" 
    {
    //чистим нужную таблицу
    кубик "Установить глобальную переменную" [[GLOBAL:TABLE_CHISTIM]]=1
    }
    
    
    

    т.е. задача чистить таблицу при каждом старте скрипта. Если так не коряво, то лучше так оставлю, чем тащить в onaplicstart



  • @kuzkuz или? тогда вот так ||



  • @kuzkuz said in Так корректно или кривая реализация? Глобальная переменная:

    Подскажите, пож-та, так корректно?

    кубик if
    typeof(TABLE_CHISTIM) == "undefined" | TABLE_CHISTIM == "" 
    {
    //чистим нужную таблицу
    кубик "Установить глобальную переменную" TABLE_CHISTIM=1
    }
    
    
    

    т.е. задача чистить таблицу при каждом старте скрипта. Если так не коряво, то лучше так оставлю, чем тащить в onaplicstart

    А что именно вы хотите сделать?

    Глобальная переменная только внешне выглядит как [[GLOBAL:TABLE_CHISTIM]], использование такой конструкции, например, в "выполнить код" выдаст ошибку. Потому что в коде чтение из глобальной переменная записывается вот так:

    JSON.parse(P("basglobal", "TABLE_CHISTIM") || '""')
    

    То есть в этом коде уже стоит условие выдать пустую строку, если переменная не определена. Так что для действия if будет достаточно проверки на пустую строку

    [[GLOBAL:TABLE_CHISTIM]] == "" 
    


  • @Fox

    А что именно вы хотите сделать?

    Ребята, прошу помощи.
    Возникла проблема.

    При запуске скрипта, скрипт проверяет, если глобальная переменная ещё не установлена в значение =1, тогда выполняется несколько действий, таких например, как

    • очистить таблицу от некоторых значений
    • проверить наличие новых файлов и если есть перетащить их куда нужно

    как только действий добавилось, поток №2 стал сильно обгонять 1й поток и поток №2 стал давать ошибку (нет переменной и т.д).
    Я не очень понимаю, как заставить остальные потоки ждать, пока поток №1 не выполнит пару мероприятий? СПасибо

    ps с ошибками я проблему решил, но задача сделать так чтобы потоки ждали первого при первом запуске не решена.



  • @kuzkuz said in Так корректно или кривая реализация? Глобальная переменная:

    @Fox

    А что именно вы хотите сделать?

    Ребята, прошу помощи.
    Возникла проблема.

    При запуске скрипта, скрипт проверяет, если глобальная переменная ещё не установлена в значение =1, тогда выполняется несколько действий, таких например, как

    • очистить таблицу от некоторых значений
    • проверить наличие новых файлов и если есть перетащить их куда нужно

    как только действий добавилось, поток №2 стал сильно обгонять 1й поток и поток №2 стал давать ошибку (нет переменной и т.д).
    Я не очень понимаю, как заставить остальные потоки ждать, пока поток №1 не выполнит пару мероприятий? СПасибо

    ps с ошибками я проблему решил, но задача сделать так чтобы потоки ждали первого при первом запуске не решена.

    Буквально в соседней теме я приводил пример блокировки потоков



  • @Fox Посмотрел. Подумаю, как можно адаптировать...
    А если такой вариант.
    если поток!=1 И Глобальная_переменная!=1 тогда спать 20сек....
    Я правильно понимаю, поток №1 всегда стартует первый и всегда получит первым необходимость то что я приготовил для него?



  • @kuzkuz said in Так корректно или кривая реализация? Глобальная переменная:

    @Fox Посмотрел. Подумаю, как можно адаптировать...
    А если такой вариант.
    если поток!=1 И Глобальная_переменная!=1 тогда спать 20сек....
    Я правильно понимаю, поток №1 всегда стартует первый и всегда получит первым необходимость то что я приготовил для него?

    Понятия не имею. Что бы избежать состояние гонки организуйте правильную логику исходя из вашей задачи.


Log in to reply