同期:キュー関数 LabVIEW
LabVIEW基本講座5-15
LabVIEWの同期:キュー関数を説明します。同期:キュー関数は、キューの操作を行います。キューとは、待ち行列のことで、プログラムの基本的なデータ構造の一つです。データ入力を保持して、出力を順番に行います。順番通りに処理するプログラミングに使われます。
キューにデータを入れることをエンキュー、取り出すことをデキューといいます。
同期:キュー関数一覧
キュー取得
キューへのリファレンスを出力します。
要素をエンキュー
キューの最後に要素を追加します。
キュー要素をプレビュー
キューから要素を削除せずに、キューの前の要素を出力します。
キューステータス取得
キューに現在ある要素数など、キューの現在の状態に関する情報を出力します。
キュー解放
キューへのリファレンスを解放します。
要素をエンキュー (ロッシー)
キューに要素を追加します。キューに使用できる空きがない場合、この関数はキューの前の要素を削除して空きを確保します。「要素をエンキュー」関数と異なり、使用可能になるまで待機しません。
先頭に要素をエンキュー
キューの前に要素を追加します。
要素をデキュー
キューの前から要素を削除して、その要素を出力します。
キュー排出
キューからすべての要素を削除して、要素を配列として出力します。
キュー関数使用例
生産者/消費者デザインパターン
生産者/消費者デザインパターンは、キューを使ったプログラムのデザインパターンです。
デザインパターン概要
- 生産者ループは、消費者用に渡すデータを生成して、キューにデータを追加します
- 消費者ループは、キューからデータを受け取り、処理を実行します。
生産者/消費者デザインパターンは、イベント(ユーザーがクリックするなど)を行う生産者ループと実際の処理を行う消費者ループを分けて、並列実行が可能にしています。
これにより、時間のかかる処理による遅延やプログラムの停止などの悪影響を軽減できます。
生産者/消費者デザインパターンはLabVIEWでサンプルが用意されている代表的なデザインパターンです。
以下、LabVIEWで用意されたテンプレート(新規→テンプレート→フレームワーク→デザインパターン→生産者/消費者デザインパターン(イベント))
VI間のデータの受け渡し
キューの名前を同じにすると、キューにエンキューしたデータは保持され、独立したVI間でデータを受け渡すことが出来ます。
例:キュー_01.viとキュー_02.viのキューの名前を[TEST]に設定。
キュー_01.viでエンキューした要素がキュー_02.viでデキューすると要素が渡される。