同期:キュー関数 LabVIEW


5-15

LabVIEWの同期:キュー関数を説明します。同期:キュー関数は、キューの操作を行います。キューとは、待ち行列のことで、プログラムの基本的なデータ構造の一つです。データ入力を保持して、出力を順番に行います。順番通りに処理するプログラミングに使われます。
キューにデータを入れることをエンキュー、取り出すことをデキューといいます。

LabVIEW同期:キュー関数

同期:キュー関数一覧

キュー取得

キューへのリファレンスを出力します。

キュー取得

要素をエンキュー

キューの最後に要素を追加します。

要素をエンキュー

キュー要素をプレビュー

キューから要素を削除せずに、キューの前の要素を出力します。

キュー要素をプレビュー

キューステータス取得

キューに現在ある要素数など、キューの現在の状態に関する情報を出力します。

キューステータス取得

キュー解放

キューへのリファレンスを解放します。

キュー解放

要素をエンキュー (ロッシー)

キューに要素を追加します。キューに使用できる空きがない場合、この関数はキューの前の要素を削除して空きを確保します。「要素をエンキュー」関数と異なり、使用可能になるまで待機しません。

要素をエンキュー (ロッシー)

先頭に要素をエンキュー

キューの前に要素を追加します。

先頭に要素をエンキュー

要素をデキュー

キューの前から要素を削除して、その要素を出力します。

要素をデキュー

キュー排出

キューからすべての要素を削除して、要素を配列として出力します。

キュー排出

キュー関数使用例

生産者/消費者デザインパターン

生産者/消費者デザインパターンは、キューを使ったプログラムのデザインパターンです。

デザインパターン概要

  1. 生産者ループは、消費者用に渡すデータを生成して、キューにデータを追加します
  2. 消費者ループは、キューからデータを受け取り、処理を実行します。

生産者/消費者デザインパターンは、イベント(ユーザーがクリックするなど)を行う生産者ループと実際の処理を行う消費者ループを分けて、並列実行が可能にしています。
これにより、時間のかかる処理による遅延やプログラムの停止などの悪影響を軽減できます。

生産者/消費者デザインパターンはLabVIEWでサンプルが用意されている代表的なデザインパターンです。
以下、LabVIEWで用意されたテンプレート(新規→テンプレート→フレームワーク→デザインパターン→生産者/消費者デザインパターン(イベント))

生産者/消費者

VI間のデータの受け渡し

キューの名前を同じにすると、キューにエンキューしたデータは保持され、独立したVI間でデータを受け渡すことが出来ます。

例:キュー_01.viとキュー_02.viのキューの名前を[TEST]に設定。
キュー_01.viでエンキューした要素がキュー_02.viでデキューすると要素が渡される。

VI間のデータの受け渡し

データを受け取る側(デキュー)は、データを生成する側(エンキュー)より速く処理されるようにしてください。
生成する側の方が処理が速いとキューデータが溜まり続けてしまいます。

前ボタン
前の講座
トップボタン
LabVIEW基本講座TOP