2013-05-27 54 views
0

我是一個新手,在多線程編程,這是我的第一篇文章在這裏!所以請耐心等待。同步線程有兩個正在運行的線程,C++,窗戶

我有兩個相機,我想跟蹤同時一個對象(兩個獨立的線程)和輸出它到主功能或者一個第三螺紋位置。然後使用每個攝像頭中物體的位置計算物體的3D位置。比方說,第一攝像機輸出X1Y1,第二攝像機輸出X2Y2這些應該被用來估計Xÿž

我想定義X1Y1X2Y2爲全局變量,使他們第三線程方便。但問題是第三個線程應該與前兩個線程同步。第三個線程不改變內容x1,y1,x2y2。它僅使用這些值,以獲得Xÿž。但是,如果該值X1Y1更新和X2Y2現時仍未更新,我想第三個線程暫停,直到X2Y2被更新。或者換句話說,我想第三個線程使用X1Y1,這期間的時間很短的時間,在一個時間點,或獲得理想X2 Y2

我很感激任何關於如何解決這個問題的建議。我正在考慮使用CreateThread()。有更容易的方法嗎? 在多線程編程中使用全局變量是一個好主意嗎? 分別是從線1和2是一個好主意,以輸出全局變量T1T2(系統時間),並在第三個線程比較?這種方法的一個問題可能是,因爲線程1和線程2都在做同樣的事情,所以我們假設T他們完成他們的任務,因此在這些線程之間總是存在固定的延遲,這可能會比我們想。而作爲一個結果,螺紋3再也找不到X1Y1X2Y2其中獲得在時間上非常接近!

注:我使用Windows 7時,Visual Studio 2010,C++編程語言。

+0

你或者你能否給用於生成[x,y]的幀的到達加上時間戳?更好 - 相機能夠在圖像採集上生成時間戳嗎? –

回答

1

線程1可以SetEvent的(事件1)和線程2可以SetEvent的(事件2)。線程3使用WaitForMultipleObjects等待,直到兩個事件都已設置。WaitForMultipleObjects暫停調用線程,然後在設置兩個事件時返回。