2012-02-28 15 views
0

より良い効率のために同時に2つのタスクを行うプログラムを書く必要があります&高い応答。最初のタスクは、例えば、カメラからビジョンデータを取得して、&を処理することです。ロボット制御のための並列プログラミング

第2のタスクは、第1のタスク&から処理されたデータを受信し、このデータで他の処理を実行します(ロボット制御戦略)。しかし、ロボット制御タスクが実行されている間は、カメラのデータ受信は依然として機能しているはずです。

C++/C#でこの種のプログラミングの解決方法はありますか?私はTBBを学んでいます、それは正しい選択ですか?しかし、私は "ループ並列化"のようなものを読んでいる、私は正しい方向に行くのですか?

コンピュータは電子デバイス(センサー)&アクチュエータとこれらのすべてのデバイスが同時に処理さ

答えて

2

いいえ、ループのあなたの例に接続するための中央ユニットとして使用されている制御プログラムにおいて非常に一般的なスタイルにこのリンクはパラレルプログラミングはパラレルプログラミングを使用して、1つのデータセットの計算結果をスピードアップします。

必要なものはマルチタスクです。ターゲットアーキテクチャについては言及していませんでした。これがマイクロプロセッサのような組み込みシステムであると仮定すると、いくつかの選択肢があります。 VXworksやuC-OSのような組み込みマイクロOSがあり、あなたが求めていることだけを行うことができます。これにより、実質的に同時に実行される複数の「タスク」を設定できます。もちろん、1つのCPUで真の同時実行は不可能ですが、これらのOSのスケジューラは、あなたのような準リアルタイムシステムでは非常に決定的になるように設計されています。

+0

はい、具体的には、私はコアi7デスクトップPC、win7を使用しています。私はカメラからフィードバック情報を得ようとしており、このPC、VS2008&OpenCV 2.1でロボットを制御しようとしています。どうすればそれを管理できますか?マルチタスキングの場合は、私のアーキテクチャでどのツールを実行するのですか? –

0

いいですね! TBB OK、C#にはスレッドプールなどの便利なクラスがあります。あなたが前にこのようなことをしていないならば、ただ一つのことです - それはデータではなく、コードに関するものです。データフローを正しく設計すると、コード自体が書き込まれます(よくありません:)。

+0

はい。私はTBBの本を見直しました。 TBBは、ゲームプログラミング、レンダリング分割、物理タスクモジュール、およびそれらの並列化にも使用されます。そして、私の問題にもこれが当てはまると思います。大きなタスクを小さな並列タスクユニットに分割する方法についての詳細です。しかし、これは時間がかかり、学ぶ時間がかかります。 :| –

関連する問題