2013-05-27 20 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暂停调用线程,然后在设置两个事件时返回。