キューとは何ですか?

更新しました Jul 30, 2023

使用製品

ソフトウェア

  • LabVIEW

問題

現在のコードではキューを使うべきだと提案されています。キューとは何ですか?どのように使用しますか?

解決策

キュー(Queue)とは、直訳すると待ち行列を意味し、データ項目の先入れ先出し(FIFO: First In/First Out)の順番を維持するものです。たとえば、ファストフード店でお客が注文をおこなうためには列に並びます。この待ち行列がキューです。一番先に着いたお客がまず始めに注文を行い、並んだ順に注文をすることができます。

キューは、コードの一部分をほかの場所(別のループ)で使用されるデータを作成する必要のある生産者/消費者デザインパターンにおいて有効です。キューを使用するメリットは、生産者ループと消費者ループの速度が同じではない場合にも使用できる点です。消費者ループが生産者ループより遅い場合、キューは最終的に満杯になり、生産者ループのコードは消費者ループが溜まった要素をデキュー(削除/取り出し)して新しい要素をエンキュー(追加/挿入)できるようになるまで待機します。
 

追加情報

配列とは違い、キューでは要素へのランダムアクセスはできません。これは、バッファへの要素のエンキューおよびデキューに関する処理が厳密に決められているからです。キューにあるすべての要素を見る方法は、1つずつデキューをして取り出すことのみです。キューにあるすべての要素をデータ操作することもできません。

LabVIEWには、キューに関するサンプルプログラムが含まれています。LabVIEWのメニューバーからヘルプ>>サンプルを検索 を選択してNIサンプルファインダを開き、検索タブでキューと検索すると、サンプルを参照することができます。

その他のタイプのデータ転送については、LabVIEWでのデータ通信方法を参照してください。
 

キュー操作VIの名称は、以下のとおりNI LabVIEW 2013より一部変更されていますのでご注意ください。

 

英語名LabVIEW 2012以前LabVIEW 2013以降
Dequeue Elementキューから要素を削除要素をデキュー
Enqueue Elementキューに要素を追加要素をエンキュー
Enqueue Element
At Opposite End
キューの先頭に要素を追加先頭に要素をエンキュー
Flush Queueキュー排出キュー排出
Get Queue Statusキューステータス取得キューステータス取得
Lossy Enqueue Elementキューに要素を追加(ロッシー)要素をエンキュー(ロッシー)
Obtain Queueキュー取得キュー取得
Preview Queue Elementキュー要素をプレビューキュー要素をプレビュー
Release Queueキュー解放キュー解放