同期および非同期NI-VISA関数選択する

概要

このドキュメントでは、NI-VISA関数に関連して同期および非同期という用語について説明します。アプリケーションに適したものを選択する際に役立つでしょう。

概要

同期と非同期という用語は、NI-VISA関数がその呼び出しスレッドに対してどのように動作するかを表します。NI-VISA関数を同期的に実行すると、その他のコードが呼び出しスレッドで実行されるのを防ぎます。大量のデータを転送する場合や、できるだけ早くデバイスとの間でデータをやり取りする必要がある場合など、状況によっては、これが望ましい場合があります。

下位レベルでは、呼び出しスレッドがロックされる時間は、インタフェースが同期か非同期かによって異なります。書き込み操作の場合、データはアプリケーション開発環境(ADE)から、コンピュータによって提供され基礎となる物理リソースに転送される必要があります。読み込み操作の場合、データはデバイスの物理リソースからADEに転送される必要があります。どちらの転送もメモリの様々なレイヤを通過する必要があります。

書き込み操作の場合、次のシーケンスが発生します。

  1. 呼び出しスレッドがロックされます。
  2. 「VISA書き込み」関数に関連付けられたデータがADEからVISAメモリに転送されます。
  3. VISA書き込みに関連付けられた全てのデータがVISAメモリからハードウェアリソースの基礎となるドライバに転送されたタイミングを判断するため、ポーリングが開始されます。
  4. 転送が完了します。
  5. 「VISA書き込み」関数が戻ります。

読み取り操作の場合、同じシーケンスが発生しますが、順番が逆になります。

同期操作の場合、上記のステップ4と5の間で呼び出しスレッドのロックが解除されます。非同期操作の場合、ステップ2と3の間で呼び出しスレッドのロックが解除されます。アプリケーションで同期か非同期かを選択する場合、読み取りまたは書き込みされるデータの量と、アプリケーションで利用可能なスレッドの数を考慮する必要があります。

大量のデータをできるだけ短時間で転送する必要がある場合、同期的に操作を行うことを検討する必要があります。これにより呼び出しスレッドはハードウェアリソースとの間のデータ転送に専念できるからです。操作を非同期で実行すると、呼び出しスレッドはアプリケーションのその他の部分にもアクセスできますが、データがハードウェアリソースとの間で転送されたかどうかを判断するのに時間がかかります。

アプリケーションで利用可能なスレッドの数が並列プロセスの数と比較して少ない場合、NI-VISA操作を非同期で実行すると、呼び出しスレッドはアプリケーションのその他の部分でより早く使用できるようになります。操作を同期的に実行すると呼び出しスレッドをNI-VISA操作専用にできるため、できる限り速やかに完了することになりますが、全体的なアプリケーションのパフォーマンスは低下します。

LabVIEWで同期関数か非同期関数かを選択する場合は、以下のLabVIEWヘルプリンクを参照してください。

 

Was this information helpful?

Yes

No