2012-02-28 120 views
0

我需要編寫一個程序,它同時執行2個任務,以提高效率&高響應。例如,第一項任務是從攝像頭&獲取視覺數據。機器人控制並行編程

第二個任務是從第一個任務&接收處理後的數據,並與此數據(機器人控制策略)做其他處理。但是,在執行機器人控制任務時,相機數據接收應仍在工作。

在C++/C#中有這種類型的編程的解決方案嗎?我正在學習TBB,這是正確的選擇嗎?但是,我正在閱讀「循環並行」之類的東西,我是否會朝着正確的方向前進?

此鏈接到控制編程一個很常見的樣式,其中所述計算機被用作中央處理單元連接到電子設備(傳感器)&致動器,並且所有這些設備都同時處理

回答

2

否,你的循環的示例並聯是使用並行編程來加速計算一組數據的結果。

你需要的是多任務處理。你沒有提到任何目標架構。假設這將是一個嵌入式系統,就像一個微處理器一樣,你有幾種選擇。有像VXworks和uC-OS這樣的嵌入式微操作系統,可以讓您按照您的要求進行操作。這些允許您設置多個幾乎同時運行的「任務」。當然,對於一個CPU來說,真正的併發是不可能的,但是對於像您所描述的準實時系統,這些操作系統中的調度器被設計爲非常確定性的。

+0

是的,更具體。我使用的是核心i7臺式電腦win7。我試圖從相機獲取反饋信息,並使用此PC控制機器人,VS2008&OpenCV 2.1。我該如何管理?如果它是多任務處理,那麼在我的架構上執行哪個工具? – 2012-02-28 14:50:45

0

聽起來對我很好! TBB好的,C#有用的線程池等類。只有一件事,如果你以前沒有做過這樣的事情 - 那只是數據而不是代碼。如果您正確設計數據流,代碼將自行編寫,(好吧,不是:)。

+0

是的。我已閱讀了TBB書。 TBB還用於遊戲編程,劃分渲染,物理任務模塊並將它們並行化。那麼,我想這也適用於我的問題。更多的是關於如何將大任務分解爲小並行任務單元。然而,這需要花費很長時間來學習。 :| – 2012-03-02 14:05:09