Если уйти максимально в глубину то реентрантные vi могут быть в многопроцессорных системах со своими блоками оперативной памяти, к которым возможен одновременный доступ.dadreamer писал(а): ↑11 июн 2020, 22:29 ujin, в этом простом не происходит никакой работы с ресурсами, к которым может быть одновременный общий доступ и следовательно состояния гонки, так что его можно юзать хоть реентерантно, хоть "как обычно". Это целиком воля программиста. Просто если он не реентерантный, то все одновременно запущенные экземпляры будут выполняться по очереди (т.к. датаспэйс у такого ВИ один). Это может несколько сказаться на производительности. Если бы был реентерантный, то насоздавал бы клонов (по клону на каждый экземпляр) и они бы выполнялись одновременно. Это было бы быстрее. Но тут уж совсем простой , так разница по временам должна быть мизерная, потому можно этой опцией вообще пренебречь.
Ну, и действительно, если вышестоящий вызывается параллельно и дёргает этот SubVI, то True-реентерантности не получится, т.к. будет выполнять этот SubVI по очереди (как я выше и написал).
Все остальные выполняются процессором так же псевдопараллельно. Т.е по факту последовательно. Даже если есть процессор многоядерный, все-равно доступ к ОЗУ, дискам последовательный.
Реентрантные vi в связи с этим будут так же выполняться последовательно, но для нас это будет выглядеть параллельно. Если нагрузить много клонов с одинаковыми правами и без циклов ожидания, они так же затормозят выполнение друг друга.
Реентантный vi имеет как Вы указали свой датаспейс, вот и все его принципиальное отличие. В данном случае возникла ситуация, когда им всем понадобился один ресурс, но при этом они не перестали быть реентрантными - это принципиальная неточность.