1

在参加 CLD-R 之前,我正在阅读样本试卷。

我遇到了如下所示的可重入问题:

在此处输入图像描述

答案是4。

文档中没有具体提及 for 循环中的预分配。

“预分配”意味着对于每个调用,我们都会为该调用创建一个数据空间并进行克隆。

以上建议答案是 6,总共有 6 个调用,但答案是 4。这是否意味着在 FOR 循环中只为 VI 分配了一个克隆?

4

1 回答 1

4

这是否意味着在 FOR 循环中只为 VI 分配了一个克隆?

是的。相关术语是“呼叫站点”,在帮助中您可以找到:

在可重入执行中,LabVIEW分配数据空间的多个实例或克隆,以便每个调用点或调用方程序框图上子VI的使用可以同时并行执行,这样每个调用点使用单独的克隆。

由于 VI 在代码中的一个位置,它被重用。当您编写一个具有有用状态(如反馈节点)的 VI 时,这变得非常重要,然后您天真地在循环中调用它,期望循环的每次迭代都有自己的副本和自己的状态,结果发现所有迭代共享相同的状态。

于 2017-09-03T13:51:28.000 回答