Странное поведение "Ресурсов"



  • Здравствуйте коллеги!
    Столкнулся со странным, а если быть точнее, недопустимым поведением при использовании обычного "*.txt"-ресурса.

    Создаётся ресурс стандартным диалогом "+ Создать ресурс".
    Имя SRC_TXT, тип *.txt- из файла, режим "Чтение и удаление строк из файла" -> "Использовать каждую строку один раз".

    Заполняем его чем-то вроде:

    qwdf1@mail.ru:boroda1
    qwdf2@mail.ru:boroda2
    qwdf3@mail.ru:boroda3
    qwdf4@mail.ru:boroda4
    qwdf5@mail.ru:boroda5
    qwdf6@mail.ru:boroda6
    qwdf7@mail.ru:boroda7
    qwdf8@mail.ru:boroda8
    qwdf9@mail.ru:boroda9
    

    В OnApplicationStart размещаем глобальную переменную-счётчик и помещаем в неё кол-во элементов ресурса:
    70015e71-1601-4d1f-ace4-28b3902e371f-image.png
    Затем, несложная эксплуатирующая логика, эмулирующая примерно-настоящее, ожидаемое поведение:
    12277a34-84b3-4195-a313-d23bad6fdd69-image.png
    Означающее примерно следующее:

    1. Посчитать элементы, для, возможно каких-либо операций на основании знания об этом.
    2. Взять элемент для совершения каких-либо действий с его участием.
    3. Если ресурс опустел, отстреляться в лог о количестве выполненных операций и не перезапуская поток, завершить его выполнение.
    4. Иначе, выполнить какие-то действия, внутри которых, подразумевается вероятность того, что данные из ресурса придётся вернуть обратно в источник, в случае, если, например, до их использования не дошло и по пути вылезли иные, непреодолимые "препятствия". Это поведение эмулирует случайное значение, получающее единицу, или ноль, соответственно, возвращая полученное значение в ресурс, с установленной галочкой на:
      7fb57ec7-b44b-4b7b-bfae-a7e4c69386de-image.png

    Сохраняем.
    Запускаем в режиме "Запуск", например, в четыре потока:
    93923678-c108-4e18-ac4f-c737ebc7f58e-image.png
    Всё чётко. Девять элементов в ресурсе, три из которых вернулись обратно в источник и были вновь использованы. Итого 12 итераций по данным, о чём свидетельствует завершающий текст красным цветом.

    • Файл ресурса — пустой.

    Запускаем с теми же настройками, предварительно добавив в ресурс всё тот же набор строк. Ожидаем когда произойдут какой-либо набор действий, например, появится первое сообщение о добавленном/возвращённом в ресурс элементе и принудительно завершаем выполнение сценария, указав опцию Ждать каждый поток. Пока выбирал эту опцию, у меня уже засветилось в логе примерно пять добавлений и остальные добавились после:
    e83fe877-5187-4989-bb9c-54d8274ce4e7-image.png

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

    • Файл ресурса — пустой.

    Но, как?!? Как минимум, хотя бы какое-то количество элементов, возвращённых в ресурс должны были оказаться там!

    Считаем:
    9 начальных элементов + 8 добавленных = 17
    17 - 11 Ok = 6

    ======================================
    Или это работает иначе?
    Прокомментируйте пожалуйста.



  • @Jura_404 Приложите тестовый скрипт. Он пригодится для ответа на ваш вопрос, а то повторять его по скриншотам не очень хочется


Log in to reply