Ожидаю ресурс



  • В логе стало писать ожидаю ресурс [Название]
    Не пойму почему, стоит notreuse и бесконечное число использований.
    Скрипт у меня многопоточный.


  • administrators

    @Kodak Уменьши время между использований и увеличь количество одновременных использований.



  • Тоже задолбало с этим "Ожидаю ресурс"
    в 3х функция все нормально в одной ждет ресурс и не может выйти по - Все данные были обработаны для ИМЯ_РЕСУРСА
    количество одновременных использований - нельзя так как потоки повторно используют ресурс а мне нужно чтобы один раз юзался
    уменьшил только ожидание до 1000, бестолку
    Бьюсь уже второй день (



  • @Кот
    Проверь что бы имя ресурса правильно прописано в ресурсе и в скрипте , если поменял имя то будет пустой. Также проверь логику скрипта, найди где он застревает. Если все ок, то добавь в ресурс много тестовый информации для отладки



  • @toobie неа я уже все перепроверил и заново функцию создавал и ресурсы новые плюнул на все, сделал два отдельных скрипта синхронно чтобы работали
    такой глюк я ловил год назад тоже в одном скрипте. Так и не разобрался откуда это.


  • administrators

    @Кот Убедитесь, что количество строк в ресурсе превышает или равно количеству потоков скрипта.



  • @fox в ресурсе динамически количество всегда, одна функция наполняет ресурс допустим 100 строк далее запускается многопоточная функция в 10 потоков, вот в этой многопоточной после отработки 100 строк и зависает "ожидаю ресурс" и неможет выйти из функции все 10 потоков пишут что ожидают



  • @кот можно попробовать уменьшить число потоков (может в какой то момент не хватает ресурсов компа), ну и убедиться что название ресурса написано на латинице. А ещё как вам такой вариант https://community.bablosoft.com/topic/4982/как-создать-ресурс-с-именем-из-переменной/9 можно брать строку из ресурса кодом, если ничего не помогает избавиться от бесконечного ожидания ресурса может поможет чистый код?


  • administrators

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



  • @кот у Вас ресурс создается в скрте судя по всему. Если нужно завершать многопоточнуюю функцию, при создании ресурса нужно убрать галочку ожидания ресурса. Так же при получении ресурса использовать галочку не завершать работу



  • @fox повторного использование вообще нет, если потокам не хватит не дастанеться ресурс он выйти должен с сообщением что все ресурсы отработаны в том то и дело что поток не выходит по этому условия а ждет ресурс как будто в ресурсе настроено ждать
    @drprime все так и настроено



  • в main создается ресурс

    alt text

    потом идет функция где этот ресурс наполняется - 100 строк

    и далее в main вход в функцию многопоточную с 10 потоками ошибки -1 успех -1

    в этой многопоточной функции в лог выводиться строка ресурса в бесконечном цикле {{res|notreuse}}, по идее выход из этой функции должен быть выполнен после отработки всех ресурсов и потоков - покажет в лог строку ресурса, а те потоки которым не хватит ресурса выйдут с нисчем.
    но этого не происходит

    бесконечный цикл в while true - сделал чтобы не перезагружать потоки, для скорости работы.



  • @gr-al-ni возможно, нужно попробовать такой вариант, но хочется разобраться без костылей.


  • administrators

    @Кот Быстрее всего разобраться получится на готовом проекте. Скидывай хотя бы тестовый вариант, в котором проявляется ошибка.



  • @fox в лс скину сейчас.



  • проблема актуальна ( так и не ясно баг это или еще что.



  • @кот а брать через код пробовал?



  • @gr-al-ni пока нет, мистер @fox вроде колупает скрипт, жду экспертного заключения что скажет.
    Все же нужно выявить без работы через код почему такая ситуация.



  • @кот ожидание можно в 0 выставлять.



  • Все, проблема выявлена эмпирическим путем

    "в предыдущей версии были баги с вызовом функции в несколько потоков, баги были критические и действие изменили" - © fox

    в версии 21.3.0 - скрипт отрабатывает нормально

    расходимся

    upd

    после запуска на версии 21.3.0, повторно запустил на предыдущей и о чудо все работает нормально.