VI обработчика сообщений в очереди в родительском SubVI, тип выполнения которого установлен как предварительно выделенный (?)
Я создаю образец коммуникационного сервера через LabVIEW.
В основном VI у меня есть сервер и клиенты: выполнение последнего установлено как предварительно выделенный повторный вход клона. Я использую обработчик сообщений в очереди для передачи сообщений и команд между сервером и клиентами.
На рисунке ниже показан клиентский VI (предварительно распределенное выполнение повторного входа в клон) с выделенными SubVI в очереди сообщений. В моем предыдущем вопросе я спросил о типе исполнения SubVI в клиентских VI (предварительно выделенных) и получил ответ, что SubVI также необходимо предварительно распределить. Но теперь мой вопрос касается VI шаблона обработчика сообщений в очереди. Должен ли я установить тип исполнения VI шаблона обработчика сообщений в очереди так же, как для родительского VI?
Спасибо
1 ответ
Мне кажется, что VI с обработчиком сообщений в очереди имеет соответствующие настройки входа.
Например Enqueue Message
, который всегда должен выполняться быстро, не реентерабелен, но Dequeue Message
, который ожидает сообщения, если его еще нет в очереди, является предварительно выделенным клоном.
Хорошо, что вы думаете об этом, поскольку ошибки синхронизации можно отследить намного сложнее, чем простые ошибки значения данных, но в большинстве случаев я думаю, что вы можете доверять разработчикам инфраструктуры, которые сделали правильный выбор.
Если вы действительно не удовлетворены этим и все еще беспокоитесь о том, что неправильная настройка повторного входа может вызвать у вас проблемы, вам не помешает изменить все эти ВП на предварительно выделенный повторный вход клонов. Если вы не используете эти ВП для передачи некоторой огромной структуры данных, дополнительная память, используемая предварительно выделенными клонами, должна быть небольшой.