1

我正在通过 LabVIEW 创建一个通信服务器的示例。 在此处输入图像描述

在主 VI 中,我有一个服务器和客户端:最后一个执行设置为预分配克隆可重入。我使用队列消息处理程序在服务器和客户端之间传输消息和命令。

下图是突出显示的Queued Message SubVIs的客户端 VI(预分配的克隆可重入执行)。在我之前的问题中,我询问了客户端 VI(预分配)中子 VI 的执行类型,得到的答案是子 VI 也需要预分配。但现在我的问题是关于队列消息处理程序模板 VI。我应该将队列消息处理程序模板VI的执行类型设置为与父VI相同吗?

在此处输入图像描述

谢谢

4

1 回答 1

1

在我看来,队列消息处理程序 VI 具有开箱即用的适当重入设置。

例如Enqueue Message,它应该总是快速执行,是不可重入的,但是Dequeue Message如果队列中没有消息则等待消息,它是预分配的克隆可重入的。

考虑到这一点很好,因为计时错误可能比简单的数据值错误更难追踪,但对于大多数目的,我认为您可以相信框架的设计者选择正确。

如果您对此真的不满意并且仍然担心不正确的可重入设置可能会给您带来麻烦,那么将所有这些 VI 更改为预分配的克隆可重入并没有什么坏处。除非您使用这些 VI 来传递一些庞大的数据结构,否则预分配的克隆所消耗的额外内存应该很小。

于 2018-05-16T07:46:51.837 回答