Не видна кнопка "Pause"

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
ujin
user
user
Сообщения: 77
Зарегистрирован: 28 июл 2019, 13:16
Репутация: 0
Версия LabVIEW: 19
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение ujin »

dadreamer писал(а):
11 июн 2020, 22:29
ujin, в этом простом :vi: не происходит никакой работы с ресурсами, к которым может быть одновременный общий доступ и следовательно состояния гонки, так что его можно юзать хоть реентерантно, хоть "как обычно". Это целиком воля программиста. Просто если он не реентерантный, то все одновременно запущенные экземпляры будут выполняться по очереди (т.к. датаспэйс у такого ВИ один). Это может несколько сказаться на производительности. Если бы :vi: был реентерантный, то :labview: насоздавал бы клонов (по клону на каждый экземпляр) и они бы выполнялись одновременно. Это было бы быстрее. Но тут уж совсем простой :vi: , так разница по временам должна быть мизерная, потому можно этой опцией вообще пренебречь.

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

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3505
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение dadreamer »

Я написал ровно то, что пишут NI в своих документах: Reentrancy: Allowing Simultaneous Calls to the Same SubVI Первым абзацем там как раз то, что я выше и написал. Однако я на всякий случай (предпочитаю ясность) состряпал вот такой примерчик:
main.vi
lv2011
(16.33 КБ) 13 скачиваний
subvi.vi
lv2011
(12.7 КБ) 13 скачиваний
В примере сейчас у Саба нет реентерантности. Пускаем Мэйн, пускаем SubVI's и видим, что все три саба выполняются друг за другом, т.е. по очереди. Открываем Саб, устанавливаем ему любую из двух опций реентерантности, сохраняем. Пускаем Мэйн, пускаем SubVI's и все три саба начинают выполняться одновременно. По-моему, всё логично и так это и должно работать. Причём я это часто использую в своих проектах, запуская :vi: асинхронно, когда требуется задействовать несколько систем (узлов) установки одновременно. Если бы это не работало, то механизмы бы двигались по очереди, но подобного не происходит. Имею именно параллельную работу устройств (в необходимых временных рамках). Не буду спорить, параллельный запуск множества клонов (потоков) (ну, то есть многопоточность) может несколько замедлить работу программы в целом, но на современном железе это, как правило, не ощущается. Сам :labview: при старте запускает с десяток потоков (это можно в логе посмотреть) и завершает их только при выгрузке. Да и множество процессов (служб) в ОС работают в многопоточном режиме, т.к. требуется одновременный доступ к ряду ресурсов (наиболее яркий пример - реестр Винды, который физически состоит из нескольких файлов, но его одновременно дёргают десятки процессов).
ujin писал(а):
14 июн 2020, 05:42
В данном случае возникла ситуация, когда им всем понадобился один ресурс, но при этом они не перестали быть реентрантными - это принципиальная неточность.
Вашу мысль я уловил :) Просто Андрей мог сформулировать свой посыл маленько иначе: на исследуемом SubVI образуется "узкое" место (как горлышко у бутылки) и параллельно запущенные экземпляры вызывающего :vi: могут "застрять" (на несколько мс) на вызове этого SubVI, если у него отключена реентерантность. В итоге получится не совсем ожидаемое разработчиком поведение (если только это не сделано специально).

Blackman

Activity
leader
leader
Сообщения: 929
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Репутация: 0
Версия LabVIEW: 6.1,8.5,20
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение Blackman »

Reentrant VI выполняются не параллельно, не последовательно, а одновременно :haha: :wink:
Вложения
Simple example of reentrancy.png

Artem.spb

Activity Автор
expert
expert
Сообщения: 1934
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение Artem.spb »

вот так с выяснения причин отсутствия кнопки скатились на споры про реентрантность :)
Blackman писал(а):
14 июн 2020, 15:11
не параллельно, а одновременно :haha: :wink:
а чем параллельность от одновременности отличается?

И уже несколько раз замечал тут бирюзовые иконки системных функций. Это фича :labview: 17, или это в настройках меняется?

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3505
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение dadreamer »

Artem.spb писал(а):
14 июн 2020, 15:20
И уже несколько раз замечал тут бирюзовые иконки системных функций. Это фича :labview: 17, или это в настройках меняется?
Тоже интересно. На скриптовых нодах такой цвет, но чтоб на всех... Есть какое-то хитрое свойство, чтобы нативный жёлтый на свой поменять?

Перетащил сниппет, у меня все :vi: жёлтые...

Artem.spb

Activity Автор
expert
expert
Сообщения: 1934
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение Artem.spb »

dadreamer писал(а):
14 июн 2020, 15:27
Перетащил сниппет, у меня все :vi: жёлтые...
та же история, но я в 18 затаскивал, вот и предположил, что это именно в 17

Blackman

Activity
leader
leader
Сообщения: 929
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Репутация: 0
Версия LabVIEW: 6.1,8.5,20
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение Blackman »

dadreamer писал(а):
14 июн 2020, 15:27
... Есть какое-то хитрое свойство, чтобы нативный жёлтый на свой поменять?
Хитрого нет. Есть стандартный - LabVIEW.ini :wink:

diagram.primColor=CCFFFF

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3505
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение dadreamer »

Blackman писал(а):
14 июн 2020, 19:28
diagram.primColor=CCFFFF
Спасибо. Ни на ni.com, ни на лаве не встречал эту опцию. После гуглинга нашёл:
https://labviewwiki.org/wiki/LabVIEW_co ... .primColor
https://labview.brianrenken.com/INI/color.htm
Можно нормально так стилизовать :labview: под себя. :super:

Artem.spb

Activity Автор
expert
expert
Сообщения: 1934
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Не видна кнопка "Pause"

Сообщение Artem.spb »

Blackman писал(а):
14 июн 2020, 19:28
Хитрого нет. Есть стандартный - LabVIEW.ini :wink:

diagram.primColor=CCFFFF
:super:

Ответить

Вернуться в «Общие»