0

我是多线程编程的新手,这是我在这里的第一篇文章!所以请多多包涵。

我有两个相机,我想同时跟踪一个对象(两个独立的线程)并将其位置输出到主函数或第三个线程。使用来自每个相机的对象的位置,然后应该计算对象的 3D 位置。假设第一个摄像头输出x1y1,第二个摄像头输出x2y2,这些应该用于估计xyz

我正在考虑将x1y1x2y2定义为全局变量,以便第三个线程可以轻松访问它们。但问题是第三个线程应该与前两个线程同步。第三个线程不会改变x1y1x2y2的内容。它仅使用这些值来获取xyz。但是如果x1y1的值已更新并且x2y2尚未更新,我希望第三个线程暂停直到x2并且y2已更新。或者换句话说,我希望第三个线程使用在时间点t或非常短的时间内理想地获得的x1y1x2y2 。

我感谢有关如何解决此问题的任何建议。我正在考虑使用 CreateThread()。有没有更简单的方法?在多线程编程中使用全局变量是个好主意吗?分别从线程 1 和 2 输出全局变量t1t2(系统时间),并在第三个线程中比较它们是不是一个好主意?这种方法的一个问题可能是,由于线程 1 和 2 都在做同样的事情,假设它们需要 T 秒才能完成任务,因此这些线程之间总是存在固定的延迟,这可能比我们的延迟更长想。结果,线程 3 永远找不到x1y1x2y2时间非常接近!

注意:我使用的是 Windows 7,Visual Studio 2010,编程语言 C++。

4

1 回答 1

1

线程 1 可以 SetEvent(event1),线程 2 可以 SetEvent(event2)。线程 3 使用 WaitForMultipleObjects 等待两个事件都设置完毕。WaitForMultipleObjects 挂起调用线程,然后在设置两个事件时返回。

于 2013-05-27T23:38:39.403 回答