再入実行、テンプレート、および動的VIの違い

更新しました Jul 30, 2023

使用製品

ソフトウェア

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

問題

再入実行VI、テンプレートVI、および動的VIを使用するのはどのような場合ですか?これらの3タイプの違いは何ですか?

解決策

再入実行VI

再入実行VIは、同じVIの複数インスタンスを同時に実行する場合に使用します。VIが再入実行でない場合、そのVIには1つのデータ領域があります。そのため、一度に1つの発呼者しかVIを実行できないため、他の発呼者はVIを使用するために「順番待ち」する必要があります。非再入実行がVIのデフォルト設定ですが、VIを再入可能に設定できます。再入実行には、共有と事前割り当ての2種類があります。

 
クローン共有による再入実行VI

クローン共有による再入実行オプションが選択されている場合、VIにはデータ領域のプールがあります(クローンプールと同じ)。呼び出し元のVIが開始されると、最初は2つのクローンしか作成されません。発呼者はこれらのデータ領域の1つを使用しますが、どのデータ領域かは分かりません。後続の呼び出しでは異なるインスタンスになる可能性があります。同時発呼者の数に対応するプールに十分なデータ領域(クローン)がない場合、新しいデータ領域(クローン)が作成され、プールに追加されます。ここで、「インスタンス間のクローン共有」という言葉で「共有」とは、時間の経過とともに複数の発呼者がデータ領域を使用できることを意味します。サブVIの呼び出しが20回ある場合、同時に2つの呼び出しが行われると、プールには2つのデータ領域しかなく、20回の呼び出し中に「共有」が行われます。現在の必要性に応じて必要な数のクローンしか作成されないため、メモリ使用が最適化されます。最速の実行と最良のメモリ最適化のために、このオプションを推奨します。
 

クローンの事前割り当てによる再入実行VI

クローンの事前割り当てによる再入実行オプションが選択されている場合、各呼び出し元には独自のプライベートデータ領域(およびクローン)が与えられます。VIへの呼び出しが20回ある場合、呼び出されるVIが開始されると20個のクローンが作成され、プールに追加されます。この場合、20個のクローンのうち2つだけが同時にビジー状態になることがあります。サブVIの特定インスタンスへの呼び出しが毎回、同じクローンを使用することが重要な場合(たとえば、サブVIが呼び出しから次の呼び出しまでデータを保持する必要がある場合)、この「クローンの事前割り当てによる再入実行VI」を使用します。一方、「クローン共有による再入実行VI」ではクローンを最後に使用したサブVIインスタンスがどれか分からないため、格納された情報はサブVI間で予期せず "クロストーク"が発生します。 「事前割り当て」とは、すべてのコールに対して、そのコールのデータスペースとクローンが作成されることを意味します。事前割当は、VIが実行される前に行われます。同じVIのフロントパネルを複数開く場合、再入実行サブVIオプションは役に立ちません。

複数回開くVIがトップレベルVIである場合は、ディスク上の最上位VIを固有名の一時ディレクトリに複製し、新しいファイルインスタンスを開くことができます。サブVIは複製する必要はなく、トップレベルVIのみを複製します。その後、VIサーバを使用して複製のVIを開いて実行することができます。
 

テンプレートVI

複数インスタンスのパネルをテンプレートVIにして、テンプレートから毎回ファイルを開くことができます。VIテンプレートは、拡張子が.vitのVIです。テンプレートから新しいファイルを作成するには、ファイル>>新規>>テンプレートから開始を選択します。これにより、VIの新しいインスタンスが作成され、独自のメモリ領域が作成されます。これらは作成時に別個のメモリ位置があり、別のVIを作成するための開始点として使用されます。作成した新しいVIが再入可能であるかどうかを設定する必要があります。 

 

動的VI

VIサーバでVIとVIテンプレートの両方を開くことができます。VIサーバは、VIを動的にロードして実行するために使用されます。サブVIでは、最上位VIがロードされるとサブVIのコードとデータ領域がロードされます。VIを動的にロードする場合、VIをサブVIとして使用せずにロードし、メインプログラムが呼び出されたときにロードすると、そのコードはVIサーバがサブVIを呼び出すまでロードされません。これにより、起動時のメモリが節約されます。

追加情報

VIを再入実行に変更するには、次の手順をおこないます。
  1. ファイル>>VIプロパティに移動します。

 
  1. カテゴリ>>実行に移動します。

 
  1. 再入可能オプションがクローン共有またはクローンの事前割り当てによる再入実行に設定されていることを確認します。