NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

生産者消費者パターンの並列ループの実行時間について

解決済み
解決策を見る

DAQから波形を入力し計算して記録する流れを、キュー関数で生産者消費者パターンを用いて作ろうとしているのですが、

生産者ループよりも消費者ループの方が時間がかかる設定にしたときに、

生産者ループが終わると、実行し終えていない消費者のループも止まってしまいます。

生産者消費者パターンは消費が生産に追いつかない場合に、生産されたデータを待機させられると認識していたのですが、どうして生産が終わると消費も止まってしまうのか、お分かりになる方がいらっしゃれば教えていただけると幸いです。

ブロックダイアグラムを以下に添付します。

0 件の賞賛
メッセージ1/2
1,166件の閲覧回数
解決策
トピック作成者nakarikoが受理

生産者側ループで、キューを解放しているのが原因ではないかと思います。

以下のようなイメージです。

 

  1. 生産者側ループが終了する
  2. 消費者ループはまだ処理中...
  3. 生産者側ループでキューを解放する
  4. 消費者ループのデキュー関数は、キューが突然なくなったことでエラーを返し、Statusが停止条件端子に繋がっているので消費者ループも停止

この場合、両方のループが停止してからキューを解放するなどの実行順序付けをされると良いと思います。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ2/2
1,160件の閲覧回数