Выделяет ли preallocate clone только один клон, если ВП находится в цикле FOR?

Я просматриваю образцы экзаменационных работ перед сдачей CLD-R.

Я столкнулся с вопросом повторного входа, показанным ниже:

введите здесь описание изображения

Ответ 4.

В документации нет специального упоминания о предварительном распределении в цикле for.

«Предварительное выделение» означает, что для каждого вызова мы создаем пространство данных и клонируем его для этого вызова.

Вышеизложенное предполагает, что ответ будет 6, всего имеется шесть вызовов, но ответ равен 4. Означает ли это, что только один клон назначается для ВП в цикле FOR?


person SeanJ    schedule 02.09.2017    source источник


Ответы (1)


Означает ли это, что для ВП в цикле FOR назначается только один клон?

Да. Соответствующий термин — «сайт вызова» и в заголовке help вы можете найти это:

При реентерабельном выполнении LabVIEW выделяет несколько экземпляров или клонов пространства данных, так что каждый сайт вызова или использование ВПП на блок-диаграмме вызывающей стороны может выполняться одновременно, параллельно, так что каждый сайт вызова использует отдельный клон.

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

person Yair    schedule 03.09.2017